Array típusok
Array típusok.
fogadtatás
# xA0 A kérdés a következő:
# xA0; itt van az én típusom:
# xA0; TByteArray = Byte tömb;
# xA0; És a függvények:
№1
TForm1.SomeFunc eljárás (var A: TByteArray);
kezdődik
# xA0; SetLength (A, 20);
végén;
eljárás TForm1.SomeFunc2;
var
# xA0; A: Byte tömb;
kezdődik
# xA0; SomeFunc (A);
végén;
A fordító esküszik:
[Hiba] Unit1.pas (38): A tényleges és formális var paraméterek típusainak azonosnak kell lenniük
№2
TForm1.SomeFunc eljárás (var A: Byte tömb);
kezdődik
# xA0; SetLength (A, 20);
végén;
mi:
[Hiba] Unit1.pas (31): Nem kompatibilis típusok
Kérdés, hogyan okozhat funkciót a SomeFunc (A); az 1. példából. És kijelenteni
A: TByteArray; lehetetlen.
És egy másik kérdés az, hogy miért nem hívhatod a SetLength-ot egy Byte tömbre
Számos program létezik annak meghatározására, hogy a két objektum típusai egyenértékűek-e. A leggyakrabban használt két rendszer a típusok szerkezeti ekvivalenciája és a típusok névleges egyenértékűsége. A típusok szerkezeti egyenértékűségének megfelelően két objektum csak akkor egyenértékű, ha típusuk szerkezete megegyezik. A névleges egyenértékűség rendszerével összhangban két objektum egyenértékű, ha meghatározásuk egyfajta típusú nevet használ.
Objektum Pascal elfogadja a névleges egyenértékűséget.
ezért:
És írja be
> A: TByteArray; lehetetlen.
Nem lehetetlen, de szükséges.
> És egy másik kérdés az, hogy miért nem hívhatja a SetLength-ot egy tömbön
> byte tömb
És honnan szerezted, hogy nem tudsz? Tudod!
> És egy másik kérdés az, hogy miért nem hívhatja a SetLength-ot egy tömbön
> byte tömb
eljárás TForm1.SomeFunc2;
var
A: Byte tömb;
kezdődik
SomeFunc (TByteArray (A));
végén;
Nos, megpróbáltam. Csak egy példa nem túl helyes.
Itt van a helyzetem:
TForm1.SomeFunc eljárás (A: byte tömb);
kezdődik
# xA0; SomFunc (TByteArray (A));
végén;
TForm1.SomFunc eljárás (A: TByteArray);
kezdődik
# xA0; SetLength (A, 10);
végén;
Ha A egy lok változó, akkor az öntöttek segítettek. És ha igen, akkor
# xA0; [Hiba] Unit1.pas (30): Érvénytelen írásmód
> És egy másik kérdés az, hogy miért nem hívhatja a SetLength-ot egy tömbön
> byte tömb
És honnan szerezted, hogy nem tudsz? Tudod!
Nos, hogyan teheted?
[Hiba] Unit1.pas (31): Nem kompatibilis típusok
Általánosan kívánatos lenne az ilyen típusú TByteArray megszabadulni.
És írja be
> A: TByteArray; lehetetlen.
Nem lehetetlen, de szükséges.
Ez lehetetlen, mert nem akarom, hogy a modulok valamilyen extrém típust használjanak. Ő írta a modult, és egyedül van - nagyon praktikus. Ezért még mindig olyan modult kell létrehoznunk, ahol az ilyen típusúak kötelesek mindenhol csatlakozni.
Két kérdésre - miért nem lehet SetLengtht okozni a Byte tömbhöz
Mivel ebben az esetben a paraméter nem dinamikus tömb, hanem nyitott (Open Array Parameters)
Az első - nem látom az okokat, hogy minden esetben ne használd az Ön által előzetesen kialakított dyin típusát. sor
Mivel ebben az esetben a paraméter nem dinamikus tömb, hanem nyitott (Open Array Parameters)
Látom. Azok át tudják adni és stat tömböt.
> Tudod átadni és stat array.
Igen, sőt építsd fel néhányFunc-ot ([1,2,3])
Világos. Köszönöm mindenkinek :)