Da liegt der Hund begraben.....
Der String wird nich freigegeben.
mach einfach
Delphi-Quellcode:
finalize(FPbuffer^);
//oder
FPBuffer^.Str := nil;
Dispose(FPBuffer);
FPBuffer := nil;
Wenn Du nur den Speicher freigibst werden die Strings nicht gelöscht.
Aus der Hilfe zu finalize
Zitat:
Die Variable enthält lange Strings, Varianten und Interfaces, die nicht alle leer sind bzw. den Wert Unassigned haben.
Finalize setzt einfach alle langen Strings auf einen leeren Wert und alle Varianten und Interfaces auf Unassigned und sorgt somit für die ordnungsgemäße Freigabe des betreffenden Speichers.