[Delphi] AnsiString, jak usunąć...

0
var x: ansistring;

begin
 x := 'dupa';
x := '';
end.

Jak wykonalem x := ''; to chyba juz pamiec sie zwolnila? A mozna usuwac te
AnsiStringi w inny sposob? o0

0
SetLength(x, 0);
0

Dzieki.
I jeszcze jedno pytanie. Jak zadeklaruje sobie jakas zmienna np x: byte; to jej wartosc
jest nieokreslona. A jak deklaruje x:ansistring ? To kompilator automatycznie ustawia
jej wartosc na NIL?
Bo mam tablice taka 4 tysiace ansistringow... i niewiem czy trzeba je jakos najpierw poustawiac.

0

byte 0..255

Byte

0

i jeśli jej nie ustawiasz domyslnie wynosi 0

0

i gdy zadeklarujesz x: byte to domyslnie ma wartośc 0

0

gosc: nieprawda.
Zmienna lokalna typu byte będzie miała wartość nieokreśloną (śmieci, zależy co akurat wcześniej leżało tam w pamięci, nb. Delphi wyrzuci ci warninga, jakbyś chciał odczytać taką wartość).

Zmienne typu czy to String, czy to AnsiString będą zerowane, bo to więcej niż ciąg znaków: wcześniej jest ustawiany licznik odwołań na 1, długość na 0 (i chyba wartośc na '').

0

Do zerowania tablic polecam ZeroMemory.

0

No wlasnie chyba nie. Nieustawi zadnego licznika odwolan ani ciag na '' ... ?
Ustawil tylko zmienna na NIL a w pameci nic niezarezerwuje.

Ale niewiem dokladnie niech ktos sie wypowie jakis fachowiec.

edit:
A co do tego zeroMemory to mi niepotrzbene bo sam sobie moge napissc rpocedure
ktora niekoniecznie wypelni zerami.

Chodzi mi tylko o iddee sama jak to kompilator robi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0