Atribuirea unul matrice altul

Atribuirea unul matrice altul

Există două matrice

var
SelfAppFileName: array [0..MAX_PATH] Char;
AppFileName: array [0..MAX_PATH] Char;

Cum pot atribui o matrice la alta? Ea nu funcționează: SelfAppFileName: = AppFileName;

Citește Canty. Repede!

și de ce nu-i ca matrice? decât siruri de caractere obișnuite vinovat?

> Cum pot atribui o matrice la alta?

Mutați procedura.

Palladin, eu sunt de învățare la program api, și este atât un fel de linie sunt stabilite în multe funcții, de exemplu, în același

GetModuleFileName (0, AppFileName, sizeof (AppFileName));

în general, așa cum am atribui unul diferit?

Deci, nu?

Muta (AppFileName, SelfAppFileName, sizeof (AppFileName));

Nu, este cu siguranță lăudabil, dar GetModuleFileName ia în parametrii nu este o matrice, și un pointer la buffer alocat și dimensiunea buffer-ului. de aceea este necesară pentru o bună

Și dacă trebuie să facă acest lucru? Aproximativ atribuite după cum urmează:

AppFileName: = SelfAppFileName + "Test";

Deci, nu este într-un fel foarte mi se pare:

Deplasare (AppFileName + "Test", SelfAppFileName, sizeof (AppFileName + "Test"));

Poate mai bine în ultimul parametru pentru a specifica MAX_PATH? Sau altceva?

Deplasare (AppFileName + "Test", SelfAppFileName, sizeof (AppFileName + "Test")); așa că nici măcar nu funcționează. (((Cum de a face o astfel de atribuire vă rugăm să ajute.

În general - utilizați linia și nu suferă.

Setlength (s, MAX_PATH);
n: = GetModuleFileName (0, @ s [1], Lungime (e));
Dacă n = 0 Apoi Raise Exception.Create ( "eroare Kakata");
Setlength (s, n);

și să lucreze cu ei ca doreste inima ta, adauga, este atribuit.

Faptul de a problemei pe care acestea sunt unul și același tip de matrice [0..MAX_PATH] Char;

tip
TMAS = array [0..MAX_PATH] Char

var
SelfAppFileName: TMAS;
AppFileName: TMAS;

> Faptul de a problemei pe care acestea sunt unul și același tip de matrice [0..MAX_PATH] Char;

Dmitry_177 # XA0; (17.10.06 15:01) [13]
precum și unul?

Deci - unul. Și așa, de asemenea:
SelfAppFileName, AppFileName: # XA0; array [0..MAX_PATH] Char
unul.


tip
# XA0; TMaxPathString = # XA0; array [0..MAX_PATH] Char;

var
# XA0; sysdir: TMaxPathString;
# XA0; NumeFișier: TMaxPathString;


# XA0; GetSystemDirectory (sysdir, MAX_PATH);
# XA0; NumeFișier: = sysdir + "\ test.txt";

Și de ce nu funcționează?

și cum apoi să facă o astfel de misiune?

Am înțeles că aceasta este o întrebare stupidă, dar aș dori să știu răspunsul, cartea este acum lângă nr. (((

Ei bine, spune-mi te rog ..

Ce îngerul ai făcut aceste matrice? că, [9] este imposibil din motive religioase?

spun corect de lucru mai bine cu siruri de caractere String, iar dacă aveți nevoie pentru a trece un parametru la API - PChar (e);
Ie puteți

var
s: String;
Setlength (s, MAX_PATH);
n: = GetModuleFileName (0, PChar (s) Lungime (e).);

și despre tipurile de
Acest anunț este creat atunci când două tipuri diferite:
tip
# XA0; arrstr1 [0..MAXPATH] de char;
# XA0; arrstr2 [0..MAXPATH] de char;

Și în acest caz:


tip
Tm = array [0..1] de char;
var
m1, m2: Tm;
începe
m1: = "QW";
m1 =;: m2
WriteLn (m2); // QW
end.
Când prisvaenii m2: = m1 a crea un „alias“ pentru prima matrice și apoi, când m2: = „QW“, atunci m1 devin, de asemenea, egal cu „QW“

> Când prisvaenii m2: = m1 a crea un „alias“ pentru prima matrice
> Continuați cu m2: = „QW“, atunci m1 devin, de asemenea, egal cu „QW“

Ie Am vrut să spun acest lucru:

tip
Tm = array [0..1] de char;
var
m1, m2: Tm;
începe
m1: = "QW";
m1 =;: m2
WriteLn (m2); // QW
m2: = "NewValue";
WriteLn (m1); // NewValue
end.

Memorie: 0,76 MB
Timp: 0,08 c