3.3.6. ΠΡΠ»Π΅Π²ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ ΡΡΡΠΎΠΊΠΈ
Π₯ΠΎΡΡ ΡΠΈΠΌΠ²ΠΎΠ» #0 ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠ½Π΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ AnsiString, ΠΎΠ½ ΡΠΆΠ΅ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠΌ Π΅Π΅ ΠΊΠΎΠ½ΡΠ°, Ρ.ΠΊ. Π΄Π»ΠΈΠ½Π° ΡΡΡΠΎΠΊΠΈ Ρ ΡΠ°Π½ΠΈΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ #0 ΠΈ Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ ΡΡΡΠΎΠΊΠΈ. ΠΠΎ Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ, ΡΡΠΎ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π² PChar Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ β ΡΡΠΎ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ Zero Π½Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ΅ (Π»ΠΈΡΡΠΈΠ½Π³ 3.32).
ΠΠΈΡΡΠΈΠ½Π³ 3.32. ΠΠΎΡΠ΅ΡΡ ΠΎΡΡΠ°ΡΠΊΠ° ΡΡΡΠΎΠΊΠΈ ΠΏΠΎΡΠ»Π΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° #0procedure TForm1.Button1Click(Sender: TObject);
var
S1, S2, S3: string;
P: PChar;
begin
S1 := 'Test'#0'Test';
S2 := S1;
UniqueString(S2);
P := PChar(S1);
S3 := P;
Label1.Caption := IntToStr(Length(S2));
Label2.Caption := IntToStr(Length(S3));
end;
Π ΠΏΠ΅ΡΠ²ΡΡ ΠΌΠ΅ΡΠΊΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΎ ΡΠΈΡΠ»ΠΎ 9 (Π΄Π»ΠΈΠ½Π° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ), Π²ΠΎ Π²ΡΠΎΡΡΡ β 4. ΠΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΠΏΡΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ AnsiString Π² Π΄ΡΡΠ³ΡΡ ΡΠΈΠΌΠ²ΠΎΠ» #0 Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ ΡΡΡΠΎΠΊΠΈ β Π½Π΅ ΠΏΠΎΠΌΠ΅Ρ Π° (Π²ΡΠ·ΠΎΠ² UniqueString Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ). Π Π²ΠΎΡ ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΡ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΠΌ ΡΡΡ ΡΡΡΠΎΠΊΡ PChar, ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π΅Π΅ ΠΈΡΡΠΈΠ½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Π΅ ΡΠ΅ΡΡΠ΅ΡΡΡ, ΠΈ ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΡΠ΅ΡΡΡ Π½Π° ΡΠΈΠΌΠ²ΠΎΠ» #0, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅Π³ΠΎ ΡΡΡΠΎΠΊΠ° "ΠΎΠ±ΡΡΠ±Π°Π΅ΡΡΡ".
ΠΠΎΡΠ΅ΡΡ ΠΊΡΡΠΊΠ° ΡΡΡΠΎΠΊΠΈ ΠΏΠΎΡΠ»Π΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° #0 ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΡΠ΅Π³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π΅ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ShortString ΠΈΠ»ΠΈ AnsiString Π² PChar, Π΄Π°ΠΆΠ΅ Π½Π΅ΡΠ²Π½ΠΎΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ΅ API-ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π½ΡΠ»Ρ-ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, Π° Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ β ΠΏΡΠΎΡΡΠΎ ΠΎΠ±Π΅ΡΡΠΊΠΈ Π½Π°Π΄ ΡΡΠΈΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ²Π΅ΡΡΠΈ Ρ ΠΈΡ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π° ΡΠΊΡΠ°Π½ ΡΡΡΠΎΠΊΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ #0, ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΠΎ Π³Π»Π°Π²Π½ΡΠΉ "ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΠΉ ΠΊΠ°ΠΌΠ΅Π½Ρ", ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ #0 Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ ΡΡΡΠΎΠΊΠΈ, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ΅Π»ΡΠΉ ΡΡΠ΄ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ AnsiString Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π²ΡΠ·ΡΠ²Π°ΡΡ API-ΡΡΠ½ΠΊΡΠΈΠΈ (ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Delphi, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ PChar, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ "Ρ Π²ΠΎΡΡΠ°" ΠΏΠΎΡΠ»Π΅ #0. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ (Π»ΠΈΡΡΠΈΠ½Π³ 3.33. ΠΏΡΠΈΠΌΠ΅Ρ ZeroFind Π½Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ΅) ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠΈΡΡΠΈΠ½Π³ 3.33. ΠΠ΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ AnsiPos Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ #0procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := IntToStr(AnsiPos('Z', 'A'#0'Z'));
end;
Π₯ΠΎΡΡ ΡΠΈΠΌΠ²ΠΎΠ» "Z" ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π² ΡΡΡΠΎΠΊΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΠΈΡΠΊ, Π½Π° ΡΠΊΡΠ°Π½ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½ "0", ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΈΡΠΊΠΎΠΌΠΎΠΉ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ. ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ AnsiPos ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ StrPos ΠΈ CompareString, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ PChar, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠΈΡΠΊ Π·Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ #0, Π½Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ. ΠΡΠ»ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ AnsiPos Π½Π° Pos, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΠΈΠΏΠΎΠΌ AnsiString Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π° ΡΠΊΡΠ°Π½ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ "3".
ΠΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π·Π°ΡΡΠ°Π²Π»ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΡΡΡ ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΌΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° #0 Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ ΡΡΡΠΎΠΊ AnsiString β ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
3.3.7. Π€ΡΠ½ΠΊΡΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ°Ρ AnsiString
ΠΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ "ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΠΉ ΠΊΠ°ΠΌΠ΅Π½Ρ", ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ ΡΠΈΠΏΠΎΠΌ AnsiString ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ Π² ΡΡΠ°ΡΡΠ΅ [4]. ΠΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅ΠΌ Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ (Π»ΠΈΡΡΠΈΠ½Π³ 3.34, ΠΏΡΠΈΠΌΠ΅Ρ StringResult Π½Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ΅).
ΠΠΈΡΡΠΈΠ½Π³ 3.34. ΠΠ΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°function AddOne: string;
begin
Result := Result + '1';
end;
procedure TForm1.Button1Click(Sender: TObject);
var
S: string;
begin
S := 'Test';
S := AddOne;
Label1.Caption := S;
end;
ΠΡΠ»ΠΈ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°, Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΠΎΠ³ΠΎ Ρ ΡΡΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΠΏΠΎΠΏΡΠΎΡΠΈΡΡ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΏΠΎΡΠ²ΠΈΡΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π΅Π³ΠΎ ΡΠ°ΡΡΡΠΆΠ΄Π΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ Π·Π²ΡΡΠ°ΡΡ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ: "Π’Π°ΠΊ ΠΊΠ°ΠΊ Result Π² ΡΡΠ½ΠΊΡΠΈΠΈ AddOne β ΡΡΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΈΠΏΠ° string, ΡΠΎ, ΠΊΠ°ΠΊ ΠΈ Π²ΡΠ΅ ΡΠ°ΠΊΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° ΠΏΡΡΡΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° '1' ΠΊ ΠΏΡΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π΄Π°ΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΡΡΠΎΠΊΡ '1', ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½Π° Π½Π° ΡΠΊΡΠ°Π½. ΠΡΡΠ°ΡΠΈ, Π½Π° ΡΡΡΠΎΠΊΠ΅ S := 'Test' ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ΄Π°ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Π½ΠΎΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ S, Π½ΠΈΠ³Π΄Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ".
ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΈ ΡΠ°ΡΡΡΠΆΠ΄Π΅Π½ΠΈΡ Π½Π΅Π²Π΅ΡΠ½Ρ. ΠΠ° ΡΠΊΡΠ°Π½Π΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ Π½Π°Π΄ΠΏΠΈΡΡ Test1, Ρ.Π΅. ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ S Π±ΡΠ΄Π΅Ρ ΡΡΡΠ΅Π½ΠΎ Π² ΡΡΠ½ΠΊΡΠΈΠΈ AddOne. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Result ΡΡΠΎ Π½Π΅ Π»ΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ-ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΡΡΠ½ΠΊΡΠΈΠΈ AddOne Π±ΡΠ»Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° ΡΠ°ΠΊ:
procedure AddOne(var Result: string);
ΠΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠΈΠΏ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΊΠΎΡΠΎΡΡΡ AnsiString (ΠΈ ShortString, ΠΊΡΡΠ°ΡΠΈ, ΡΠΎΠΆΠ΅). ΠΠ°ΠΊΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, β ΡΡΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΡΠ·Π²Π°Π½Π° ΡΡΠ½ΠΊΡΠΈΡ, ΡΠΎΡΠ½Π΅Π΅, ΠΊΡΠ΄Π° ΠΈΠ΄Π΅Ρ Π΅Π΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. ΠΠ½ΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π½Π΅ΡΠ²Π½ΠΎ ΠΈΠΌΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, Π° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ΅Π°Π»ΡΠ½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ S, ΠΏΠ΅ΡΠ΅Π΄Π°Π² Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. Π‘ΡΡΠΎΠΊΠΎΠ²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ-ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΏΠΎ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ Π½Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΏΡΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Result ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ S, ΡΡΠΎ ΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΠΌΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ.
ΠΠ· ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΌΠ½ΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ: ΡΡΠ½ΠΊΡΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ°Ρ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π΄Π΅Π»Π°ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Result, Ρ.ΠΊ. ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π»ΡΠ±ΡΠΌ.
Π‘Π»Π΅Π΄ΡΠ΅Ρ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ: Π΅ΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ, ΡΠΎ Result ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° Π½Π΅ΡΠ²Π½ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ-ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΡΠΎΡΡΠΎ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ Π·Π°ΠΌΠ΅ΡΠ½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΡ Π½ΠΈΡ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² ΠΏΡΠΎΠ»ΠΎΠ³Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Result ΡΠ°ΠΊ, Π±ΡΠ΄ΡΠΎ ΠΎΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ ΠΌΡΡΠΎΡ.
3.3.8. Π‘ΡΡΠΎΠΊΠΈ Π² Π·Π°ΠΏΠΈΡΡΡ
ΠΠΎΠ»Ρ Π² Π·Π°ΠΏΠΈΡΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ Π»ΡΠ±ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΉ ΡΠΈΠΏ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ, ΡΡΠΎ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΏΠΎΠ»Π΅ΠΉ ΠΏΡΠΎΡΡΡΡ ΡΠΈΠΏΠΎΠ², Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ ΡΠΈΠΏΠ° PChar ΠΈ AnsiString Π»Π΅ΠΆΠ°Ρ Π²Π½Π΅ ΠΏΡΠ΅Π΄Π΅Π»ΠΎΠ² ΡΡΡΡΠΊΡΡΡΡ, ΠΏΡΠΈΡΠ΅ΠΌ Π² ΡΠ»ΡΡΠ°Π΅ AnsiString ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ Π±ΡΠΎΡΠ°Π΅ΡΡΡ Π² Π³Π»Π°Π·Π°, Ρ.ΠΊ Π²ΡΡΡΠ½ΡΡ Π²ΡΠ΄Π΅Π»ΡΡΡ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡ ΠΏΠ°ΠΌΡΡΡ Π½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎΠΌΡ ΡΡΡΠΏΡΠΈΠ·Ρ, Π΅ΡΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎ ΡΡΡΡΠΊΡΡΡΠΎΠΉ ΠΊΠ°ΠΊ Ρ ΡΠ΅Π»ΡΠ½ΡΠΌ Π±Π»ΠΎΠΊΠΎΠΌ Π΄Π°Π½Π½ΡΡ . Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ ΡΡΡΡΠΊΡΡΡΡ Π² ΠΏΠΎΡΠΎΠΊ, ΡΠ°ΠΉΠ» ΠΈ Ρ.ΠΏ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠΌΡΡΠ»Π° Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΠΊΡΠΎ ΠΏΠΎΡΠΎΠΌ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΡΠΈΡΠ°Π΅Ρ, ΡΠ°ΠΊΠΎΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π»ΠΈΠ±ΠΎ Π² Π½ΠΈΠΊΡΠ΄Π°, Π»ΠΈΠ±ΠΎ Π½Π° Π΄Π°Π½Π½ΡΠ΅, Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΡΡΡΠΎΠΊΠ΅ Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΠ΅.
ΠΠ»Ρ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΈ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΅Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ Π΄Π²Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°: RecordRead ΠΈ RecordWrite (Π½Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ΅ ΠΎΠ½ΠΈ ΠΎΠ±Π° Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ RecordReadWrite). ΠΠ±ΠΎΠΉΡΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Π·Π΄Π΅ΡΡ Π½Π΅Π»ΡΠ·Ρ β ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΎΡΡΠ°Π΅ΡΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠ°ΡΠΊΠΈΡΡΠ΅ΡΡΡ. Π ΠΏΡΠΎΠ΅ΠΊΡΠ΅ RecordWrite ΡΡΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΏΠΎΡΠΎΠΊ TFileStream (Π² ΡΠ°ΠΉΠ»Ρ Method1.stm, Method2.stm ΠΈ Method3.stm ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ). Π ΡΡΠΈ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΏΠΎΠ»Ρ Π·Π°Π½ΠΎΡΡΡΡΡ ΡΠ΅ΠΊΡΡΠΈΠ΅ ΡΠ°Ρ, ΠΌΠΈΠ½ΡΡΠ°, ΡΠ΅ΠΊΡΠ½Π΄Π° ΠΈ ΡΠΎΡΠ°Ρ Π΄ΠΎΠ»Ρ ΡΠ΅ΠΊΡΠ½Π΄Ρ, ΡΡΡΠΎΠΊΠ° β ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½Π°Ρ, Π²Π²Π΅Π΄Π΅Π½Π½Π°Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π² ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° Edit1. Π€Π°ΠΉΠ»Ρ ΠΏΠΈΡΡΡΡΡ Π² ΡΠ΅ΠΊΡΡΡΡ ΠΏΠ°ΠΏΠΊΡ, ΠΈΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅Π»ΡΠ·Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Ρ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ°. Π ΠΏΡΠΎΠ΅ΠΊΡΠ΅ RecordRead ΡΡΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΡΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ ΡΡΠ΅Π½ΠΈΡ (ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ°ΠΉΠ»Π°). Π‘Π½Π°ΡΠ°Π»Π° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ β ΠΊΠ°ΠΊ Π΄Π΅Π»Π°ΡΡ Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅Π»ΡΠ·Ρ.
Π ΠΏΡΠΎΠ΅ΠΊΡΠ΅ RecordWrite ΠΈΠΌΠ΅Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ (Π»ΠΈΡΡΠΈΠ½Π³ 3.35).
ΠΠΈΡΡΠΈΠ½Π³ 3.35. ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π·Π°ΠΏΠΈΡΠΈ ΡΡΡΡΠΊΡΡΡΡ ΡΠΎ ΡΡΡΠΎΠΊΠΎΠΉ Π² ΡΠ°ΠΉΠ»type
TMethod1Record = packed record
Hour: Word;
Minute: Word;
Second: Word;
MSec: Word;
Msg: string;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Rec: TMethod1Record;
Stream: TFileStream;
begin
DecodeTime(Now, Rec.Hour, Rec.Minute, Rec.Second, Rec.MSec);
Rec.Msg := Edit1.Text;
Stream := TFileStream.Create('Method1.stm', fmCreate);
Stream.WriteBuffer(Rec, SizeOf(Rec));
Stream.Free;
end;
Π ΠΏΡΠΎΠ΅ΠΊΡΠ΅ RecordRead ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ (Π»ΠΈΡΡΠΈΠ½Π³ 3.36).
ΠΠΈΡΡΠΈΠ½Π³ 3.36. ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΡΠ΅Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ ΡΠΎ ΡΡΡΠΎΠΊΠΎΠΉ ΠΈΠ· ΡΠ°ΠΉΠ»Π°procedure TForm1.Button1Click(Sender: TObject);
var
Rec: TMethod1Record;
Stream: TFileStream;
begin
Stream := TFileStream.Create('Method1.stm', fmOpenRead);
Stream.ReadBuffer(Rec, SizeOf(Rec));
Stream.Free;
Label1.Caption :=
TimeToStr(EncodeTime(Rec.Hour, Rec.Minute, Rec.Second, Rec.MSec));
Label2.Caption := Rec.Msg; { * }