SetLength(VarArray, Razmernost1); // Π£ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ
SetLength(VarArray[1], Razmernost2); // Π£ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ Β«ΡΡΡΠΎΠΊΠΈΒ»
SetLength(VarArray[2], Razmernost3); // Π£ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠΎΡΠΎΠΉ Β«ΡΡΡΠΎΠΊΠΈΒ»
SetLength(VarArray[n], Razmernost4); // Π£ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ n-Π½ΠΎΠΉ Β«ΡΡΡΠΎΠΊΠΈΒ»
SetLength(VarArray[1][1], Razmernost5); // Π£ ΡΡΠ΅ΡΡΠ΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ Β«ΡΡΡΠΎΠΊΠΈΒ» ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Β«ΡΡΠΎΠ»Π±ΡΠ°Β»
SetLength(VarArray[1][2], Razmernost6); // Π£ ΡΡΠ΅ΡΡΠ΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ Β«ΡΡΡΠΎΠΊΠΈΒ» Π²ΡΠΎΡΠΎΠ³ΠΎ Β«ΡΡΠΎΠ»Π±ΡΠ°Β»
SetLength(VarArray[n][m], Razmernost7); // Π£ ΡΡΠ΅ΡΡΠ΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ n-Π½ΠΎΠΉ Β«ΡΡΡΠΎΠΊΠΈΒ» m-Π½ΠΎΠ³ΠΎ Β«ΡΡΠΎΠ»Π±ΡΠ°Β»
Ρ.Π΄.
ΠΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ.
3. ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½
Razmernost1:=Length(VarArray); // Π£ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ (ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ)
Razmernost2:=Length(VarArray[1]); // Π£ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ Β«ΡΡΡΠΎΠΊΠΈΒ» (ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠ»Π±ΡΠΎΠ²)
Razmernost3:=Length(VarArray[2]); // Π£ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠΎΡΠΎΠΉ Β«ΡΡΡΠΎΠΊΠΈΒ» (ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠ»Π±ΡΠΎΠ²)
Razmernost4:=Length(VarArray[n]); // Π£ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ n-Π½ΠΎΠΉ Β«ΡΡΡΠΎΠΊΠΈΒ» (ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠΎΠ»Π±ΡΠΎΠ²)
Razmernost5:=Length(VarArray[1][1]); // Π£ ΡΡΠ΅ΡΡΠ΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ Β«ΡΡΡΠΎΠΊΠΈΒ» ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Β«ΡΡΠΎΠ»Π±ΡΠ°Β»
Razmernost6:=Length(VarArray[1][2]); // Π£ ΡΡΠ΅ΡΡΠ΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ Β«ΡΡΡΠΎΠΊΠΈΒ» Π²ΡΠΎΡΠΎΠ³ΠΎ Β«ΡΡΠΎΠ»Π±ΡΠ°Β»
Razmernost7:=Length(VarArray[n][m]); // Π£ ΡΡΠ΅ΡΡΠ΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ n-Π½ΠΎΠΉ Β«ΡΡΡΠΎΠΊΠΈΒ» m-Π½ΠΎΠ³ΠΎ Β«ΡΡΠΎΠ»Π±ΡΠ°Β»
4. ΠΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅
VarArray[n][m][o][p][r]:=1; // :Integer // Π ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ n-Π½ΠΎΠΉ Β«ΡΡΡΠΎΠΊΠΈΒ», m-Π½ΠΎΠ³ΠΎ Β«ΡΡΠΎΠ»Π±ΡΠ°Β», // o-ΡΠΎΠ³ΠΎ Β«?Β», p-ΡΠΎΠ³ΠΎ Β«?Β», r-ΡΠΎΠ³ΠΎ Β«?Β»
5. ΠΠ±Π½ΡΠ»Π΅Π½ΠΈΠ΅ (ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ)
SetLength (VarArray, 0); // ΠΡΠ΅Ρ ΡΡΠ°Π·Ρ
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ VI
Delphi 1
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Β«GIZMOSΒ» Π² Π²Π°ΡΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅, ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
CONST
MaxGIZMOS = $FFFF Div (SizeOf(GIZMOS)) { ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π΄ΡΡΠ³ΠΎΠ΅, ΡΠΌΠΎΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ GIZMOS Π²Ρ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΠ΅...}
TYPE
pGIZMOArray = ^GIZMOArray;
GIZMOArray = Array[1..MaxGIZMOS] of GIZMOS;
VAR
TheGIZMOS: pGIZMOArray;
GIZMOcount: integer;
BEGIN
GetMem(TheGIZMOS,(GIZMOcount+1)*SizeOf(GIZMO)); {ΠΡΠΆΠ½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π΅Π΄ΠΈΠ½ΠΈΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠ°ΡΡΠΈΠ² GetMem Π²Π΅Π΄Π΅Ρ ΠΎΡΡΡΠ΅Ρ Ρ Π½ΡΠ»Ρβ¦}
TheGIZMOS^[index] := Whatever;
Π½Ρ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅β¦
TList β ΡΠ°ΠΊΠΎΠΉ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ². ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΡΠΏΡΠ°Π²ΠΊΠ΅. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ ΡΠ°ΠΌΠΈ, ΡΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ GetMem Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΡΡ ΠΏΠ°ΠΌΡΡΡ, ΠΈ Π·Π°ΡΠ΅ΠΌ FreeMem Π΄Π»Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, Π·Π°Π½ΡΡΠΎΠΉ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ. Tlist ΡΠ΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ Π·Π° Π²Π°Ρ ΡΠ°ΠΌΡΠΌ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ VII
Delphi 1
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ. ΠΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠΎΡ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ β ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠΎΠΊ ΠΈΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΡΠ΅Π» (ΡΠ΅Π»ΡΠ΅, Π½Π°ΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈ ΠΏΡ.).
1. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠΉ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠΎΠΊ, Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π²Π°ΠΌ Π²Π·Π³Π»ΡΠ½ΡΡΡ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ tStringList, ΠΎΠ½ ΡΠ°ΠΌ Π·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎ ΡΡΠ½ΠΊΡΠΈΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ Π»Π΅Π³ΠΎΠΊ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ.
2. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠΎΠΊ, Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ tStringList (Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π²Π°ΡΠ΅Π³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π½Π΅ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ Π»ΠΈΠΌΠΈΡ Π΄Π»Ρ tStringList, Ρ ΠΏΠΎΠ»Π°Π³Π°Ρ ΠΎΠ½ ΡΠ°Π²Π΅Π½ 16,000). Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:
ΠΠΎΠΏΡΡΡΠΈΠΌ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠΎΠΊ, ΡΠ΅ΠΊΡΡΠ΅Π΅ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ [12,80,7], ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π½Π°ΠΉΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ [n,m,x]. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΡΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΡΠΌΡΠ»Ρ ((n-1)*80*7 + (m-1)*80 + x). ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π² tStringList. ΠΠ»Ρ Π΄ΠΈΠΌΠ°Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π³ΡΠ°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ tStringList Move, ΡΠ»ΡΠΆΠ°ΡΠΈΠΉ ΠΊΠ°ΠΊ ΡΠ°Π· Π΄Π»Ρ ΡΠ°ΠΊΠΈΡ ΡΠ΅Π»Π΅ΠΉ. (ΠΠ΅ΡΠΎΠ΄ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΡΠΈΠΊΠ»ΠΎΠ², Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΎΠ½ΠΈ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ tStringList ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΡΠ΅Ρ Π½Π΅ Ρ ΡΠ°ΠΌΠΈΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, Π° Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ Π½Π° Π½ΠΈΡ .)
3. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΡΠ΅Π», ΡΠΎ Π² ΠΎΠ±ΡΠΈΡ ΡΠ»ΠΎΠ²Π°Ρ Ρ ΠΏΡΠΈΠ²Π΅Π΄Ρ Π΅Π³ΠΎ Π½ΠΈΠΆΠ΅, Π½ΠΎ Π΅ΡΡΡ ΠΌΠ°ΡΡΠ° ΠΌΠ΅Π»ΠΊΠΈΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ. ΠΠ±ΡΡΠ²ΠΈΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠΈΠΏ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΈΠΌΠ΅ΡΡΠ΅Π³ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° (ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Delphi-16 ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏΠ°ΠΌ ΠΎΠ±Π»Π°ΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠΉ 64K), Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊ:
type
bigArray: array[1..32000] of integer; {ΠΈΠ»ΠΈ ^double, ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π΅ΡΠ΅}
pMyArray: ^bigArray;
Π·Π°ΡΠ΅ΠΌ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΠ°ΠΌ ΠΌΠ°ΡΡΠΈΠ²:
getMem (pMyArray, sizeof(integer) * n);
Π³Π΄Π΅ n β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
pMyArray^[51]
ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ FreeMem ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ.
ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΈΠ»ΠΈ ΠΎΠ±ΠΌΠ΅Π½ΡΡΡΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊ:
pTemp: ^bigArray;
getMem(pTemp, sizeof(integer) * newnumelements);
memcopy(pTemp, pMyArray, sizeof(integer)*n);
{n β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² pMyArray}
freeMem(pMyArray, sizeof(integer)*n);
pMyArray := pTemp;
4. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΡΠ΅Π», ΡΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΡΠΉΡΠ΅ ΡΠ΅Ρ Π½ΠΈΠΊΡ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² ΠΏΡΠ½ΠΊΡΠ΅ (3), Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ Π² ΠΏΡΠ½ΠΊΡΠ΅ (2).
5. ΠΡΠ»ΠΈ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΡΡΠ°ΡΡΠΎΠΊ ΠΏΠ°ΠΌΡΡΠΈ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΠΌ 64K, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° ΡΡΠ°ΡΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ, Π½ΠΎ ΡΡΠ° ΡΠ΅ΠΌΠ° Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠΈ.
ΠΠΈΡΠ½ΠΎ Ρ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠΎΠ²Π°Π» Π²ΡΠ΅ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅. Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ, ΠΊΠ°ΠΊ Ρ ΡΡΠΎ Π½Π°Π·ΡΠ²Π°Ρ, Β«Basic String ObjectΒ» (BSO), Π±Π°Π·ΠΎΠ²ΡΠΉ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ ΡΡΡΠΎΠΊ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°. ΠΠ΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΡΠΎ PChar, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ Π½Π° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ. Π£ ΠΌΠ΅Π½Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π° Π²Π½Π΅ΡΠ½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°: AsString ΠΈ AsPChar. Π’Π°ΠΊΠΆΠ΅ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ.
Π― Π½Π°ΠΏΠΈΡΠ°Π» ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ malloc(), calloc() ΠΈ realloc(), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ°ΡΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° TString Π΄Π»Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ. ΠΡΠΎ ΠΊΠ»Π°ΡΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ Β«Π·Π°Ρ Π²Π°ΡΠΈΡΡΒ» Π±Π»ΠΎΠΊ ΠΏΠ°ΠΌΡΡΠΈ.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π²ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Ρ ΠΌΠΎΠ³Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΌΠ½Π΅ ΠΏΠ°ΠΌΡΡΡ (Π±Π»ΠΎΠΊΠ°ΠΌΠΈ, ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠΎ Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ), ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡ Π΅Π΅ (ΠΊΠΎΠ³Π΄Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠ΅Π·Π΅ΡΠ² β ΠΈ ΡΠ½ΠΎΠ²Π° ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π½Π΅ ΡΡΠ°ΡΠΈΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ).
Π Π΄ΡΡΠ³ΠΎΠΉ ΠΈΠ΄Π΅Π΅ Ρ ΡΠΆΠ΅ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π» (ΠΎΡΠΊΡΡΡΡΠΉ ΠΌΠ°ΡΡΠΈΠ²). ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π²ΡΡ ΠΎΠ΄Π° Π·Π° Π³ΡΠ°Π½ΠΈΡΡ ΠΈ/ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ (ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΠΌΠ½ΠΎΡ Π²ΡΡΠ΅), Π½ΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ-ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ ΠΊ Π½Π΅ΠΌΡ ΠΏΡΠΎΡΡΠΎΠΉ Π΄ΠΎΡΡΡΠΏ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ ΠΈΠΌΠ΅ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΡΠΆΠ½ΡΠΉ Π²Π°ΠΌ ΡΠΈΠΏ.
TMyDynamicObject =
β¦
PROPERTY Array[idx:LONGINT]:TMyType READ GetArray WRITE PutArray DEFAULT;
β¦
VAR Mine :TMyDynamicObject;
β¦
Mine := TMyDynamicObject.Create;
FOR i := 10 TO 20 DO Mine[i] := {Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅}
{Π§Π£ΠΠΠΠΠ©ΠΠΠ― Π ΠΠ‘Π’Π ΠΠ’Π ΠΠΠΠ―Π’Π - Π΅ΡΠ»ΠΈ Π²Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΠ°ΠΊΠΈΠ΅ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ }
Mine[-100000] := {Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅}
Mine[+100000] := {Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅}
ΠΡΠ»ΠΈ Π² Π²Π°ΡΠ΅ΠΌ ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Β«ΡΠ΅Π΄ΠΊΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠΉΒ» ΠΌΠ°ΡΡΠΈΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ Π΄Π°Π»ΠΎ Π±Ρ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΉ Π²ΡΠΈΠ³ΡΡΡ. Π― ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΡΡΠΎΠΊΠΈ, Π° Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΏΠΎΡΡΡΠ°Ρ TStrings, Π½ΠΎ Π½Π΅ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Ρ ΡΠ°ΠΊΠΎΠΉ Π»Π΅Π½ΠΈΠ²ΡΠΉ, Π° ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ½ ΡΠ΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ Π»ΡΡΡΠ΅ ΠΌΠ΅Π½Ρ, ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΡΡΠΎΠΊΠΈ.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Ρ ΡΠ°Π½ΠΈΡΡ Π²ΡΠ΅, ΡΡΠΎ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ TList (ΠΈΠ»ΠΈ TStringList.Objects)! TList.Items Ρ ΡΠ°Π½ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΠΈ, Π½ΠΎ ΠΎΠ½ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Ρ Π½ΠΈΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΈΡ ΠΊ ΡΠΈΠΏΡ longint, ΠΈ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ Π½ΠΈΡ Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ! ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π² TList ΡΠΏΠΈΡΠΊΠ° ΡΠ΅Π»ΡΡ :
var
aList: TList;
I : Integer;
L : Longint;
begin
aList := TList.Create;
L := 93823;
aList.Add(Pointer(L));
aList.Add(Pointer(83293));
for I := 1 to aList.Count do L := L + Longint(aList.Items[I-1]);
aList.Free;
end;
Π TList ΠΈ TStringList Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎ 16380 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ±Π΅ΡΠ°Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ Π² TList Π·Π°ΠΏΠΈΡΠΈ (ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ), Π²Π΅ΡΠ½Π΅Π΅, ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° Π½ΠΈΡ :
type
PMyRec = TMyRec;
TMyRec = record
Name: string[40];
Addr : string[25];
Comments: string;
salary: Double;
end;
var
aList: TList;
aRecPtr: PMyRec;
I : Integer;
begin
aList := TList.Create;
New(aRecPtr);
with aRecPtr^ do begin
Name := 'ΠΠ°Π»Π΅Π½ΡΠΈΠ½';
Addr := 'Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ΅Π½';