Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi AnsiString Memory Leak in array of const (https://www.delphipraxis.net/141745-ansistring-memory-leak-array-const.html)

raphaelm 15. Okt 2009 11:02


AnsiString Memory Leak in array of const
 
Ich benutze in einer Prozedur als Übergabeparameter ein array of const. Hier muss allerdings ein Leck sein.

Delphi-Quellcode:
procedure test(const A: array of const);
var hlp : string;
Delphi-Quellcode:
...
for i := Low(A) to High(A) do begin
  hlp := '';
  with A[i] do
    case VType of
       vtChar: hlp := string(vChar);
       vtExtended: str(vExtended^: 12: 2, hlp);
       vtInteger: hlp := format('%d', [VInteger]);
       vtAnsiString: hlp := String(vAnsiString); // Hier müsste der Fehler sein
       vtstring: hlp := (vstring^);
    end;
  end;
end;
...
Wenn ich
Delphi-Quellcode:
 vtAnsiString: hlp := trim(String(vAnsiString));
benutze, funktioniert es, allerdings sollen die Leerzeichen nicht abgeschnitten werden.

Kann mir jemand auf die Sprünge helfen was hier falsch läuft?

himitsu 15. Okt 2009 11:45

Re: AnsiString Memory Leak in array of const
 
also bei mir geht dein Code,

allerdings solltest du lieber AnsiString verwenden,
vorallem wenn du Delphi2009/2010 verwendest.
Delphi-Quellcode:
vtAnsiString: hlp := AnsiString(vAnsiString);
Zitat:

Hier muss allerdings ein Leck sein
Wieso ein Leck?

Und vorallem WAS funktioniert nicht?
Tut mir ja leid, aber ich kann mir bei bestem Willen nicht vorstellen was bei dir passiert.

Sherlock 15. Okt 2009 11:49

Re: AnsiString Memory Leak in array of const
 
Wer behauptet eigentlich, daß da ein Memory-Leak sein soll?

:gruebel:

Sherlock

himitsu 15. Okt 2009 11:54

Re: AnsiString Memory Leak in array of const
 
Zitat:

Zitat von Sherlock
Wer behauptet eigentlich, daß da ein Memory-Leak sein soll?

keine Ahnung, aber von Memory war hier doch noch nirgendwo die Rede :stupid:
ups, den Titel hatte ich doch glatt wieder vergessen :oops:

Sherlock 15. Okt 2009 12:01

Re: AnsiString Memory Leak in array of const
 
Zumindest im Titel. Oder nicht? :oops:

OT zu Himitus Signatur:
Zitat:

kräbmtleenauanr vlzelehion raütlrtäoscwkss etlnuieaesrwsirhce uchnlnasnlaegt
Na, kann man das wirklich lesen?

Sherlock

raphaelm 15. Okt 2009 12:21

Re: AnsiString Memory Leak in array of const
 
Sorry für die schlechte Beschreibung. Das mit dem Memory Leak war meine Vermutung.
Nochmal ergänzend, im Prinzip läuft das alles. Die Prozedur wird ausgeführt, nur beim Schließen der Form geht das CPU Fenster in der Delphi IDE auf bzw. das Programm verabschiedet sich. Wenn ich das Trim benutze funktioniert es ohne Fehler, deshalb meine Vermutung das es an der AnsiString Umwandlung liegt.

Ich habe mir grade ein Testprogramm mit festen Parametern geschrieben, da funktioniert es auch ohne Trim. Also wirds wohl an den Parametern liegen

raphaelm 15. Okt 2009 12:44

Re: AnsiString Memory Leak in array of const
 
ok ... der fehler hat seinen ursprung wahrscheinlich wo ganz anders :wall: brainbug meinerseits

Sherlock 15. Okt 2009 13:00

Re: AnsiString Memory Leak in array of const
 
Weisst Du eigentlich was ein Memoryleak ist?
Sowas führt nicht unbedingt zu Fehlern zur Laufzeit, nur wenn Speicherlecks vermehrt auftreten und auch groß sind, bekommt die Applikation irgendwann Atemnot. Ein Speicherleck findet für gewöhnlich auch nicht Delphi von alleine, sondern nur mit Hilfe von außen, FastMM zum Beispiel wäre so eine Hilfe.

Aber gut, daß Du das Problem lösen konntest, der Lösungsweg würde im übrigen den Thread noch die Krone aufsetzen. :zwinker:

Sherlock

Assertor 15. Okt 2009 13:26

Re: AnsiString Memory Leak in array of const
 
OT:

Zitat:

Zitat von Sherlock
OT zu Himitus Signatur:
Zitat:

kräbmtleenauanr vlzelehion raütlrtäoscwkss etlnuieaesrwsirhce uchnlnasnlaegt
Na, kann man das wirklich lesen?

Geht so. Entdreht ergibt es aber auch nicht viel mehr Sinn :mrgreen:
Zitat:

klabautermänner vollziehen rückwärtssaltos erstaunlicherweise unangeschnallt
Gruß Assertor


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz