Forum: Sonstige Fragen zu Delphi
Delphi
by SubData,
10. Okt 2008
Der Vorteil von Records ist, dass man diese wesentlich besser an DLLs übergeben kann ;-)
Forum: Sonstige Fragen zu Delphi
Delphi
by SubData,
18. Sep 2008
Nix und, ich wollte nur darauf hinweisen, dass Zufallswerte und undefinierte Werte nicht das Gleiche sind :)
Forum: Sonstige Fragen zu Delphi
Delphi
by SubData,
17. Sep 2008
Zufallswerte sind nicht undefinierte Werte.
Da gibt es riesige Unterschiede, aber das würde das Thema hier sprengen ;-)
Forum: Sonstige Fragen zu Delphi
Delphi
by SubData,
17. Sep 2008
Was ggf. direkt zu einer Zugriffsverletzung führen kann.
Forum: Sonstige Fragen zu Delphi
Delphi
by SubData,
15. Sep 2008
So... Und ich hab da auch mal was nettes:
Folgendes Konstrukt:
type
TThreadVars = record
sServerHost : String;
sRemoteIP : String;
sPHPSession : String;
sVar1 : String;
Forum: Sonstige Fragen zu Delphi
Delphi
by SubData,
14. Sep 2008
Hatten wir nicht gerade, dass bei globalen Variablen mit der Methode ein MemoryLeak auftritt ?!
Forum: Sonstige Fragen zu Delphi
Delphi
by SubData,
14. Sep 2008
Ja :)
Und bei der Gelegenheit: FastMM
Hilft dabei Speicherlecks zu finden (Und optimiert auch gleich die Anwendung)
Forum: Sonstige Fragen zu Delphi
Delphi
by SubData,
14. Sep 2008
Weiß ich, hab ich danach auch gelesen.
Forum: Sonstige Fragen zu Delphi
Delphi
by SubData,
14. Sep 2008
Danke!
Ich hab nämlich mal die böse Erfahrung gemacht, dass ich ThreadVar Records am Ende des Threads wieder explizit löschen muss, da sonst die Strings im Record MemoryLeaks verursachen.
Den Fehler muss man erstmal finden :roll:
Forum: Sonstige Fragen zu Delphi
Delphi
by SubData,
14. Sep 2008
@Michael: Kannst du das mal mit einer globalen ThreadVar Variable testen?
Einmal mit Finalize und einmal ohne.
Edit:
@Guido: Das siehst du leider ein wenig falsch.
Damit wird der Pointer auf den eigentlichen String überschrieben.
Das bedeutet aber nicht, dass bei einer neuen Zuweisung der String wieder an der selben Stelle im Speicher liegt.
Dementsprechend wird auch nicht die...
Forum: Sonstige Fragen zu Delphi
Delphi
by SubData,
14. Sep 2008
Bei Strings im Record schon (Solange es keine ShortStrings) sind.
Forum: Sonstige Fragen zu Delphi
Delphi
by SubData,
14. Sep 2008
Und ich wette FastMM würde rumnörgeln ;-)
Edit: Michael: Magste das mal mit FastMM testen?
Forum: Sonstige Fragen zu Delphi
Delphi
by SubData,
14. Sep 2008
Jap, so in etwa dachte ich mir das.
Finalize scheint aber auch nicht zu funktionieren.
Jedenfalls nicht, wenn das Record eine ThreadVar ist.
Zumindest meldet FastMM danach noch Speicherlecks.
Edit:
Forum: Sonstige Fragen zu Delphi
Delphi
by SubData,
14. Sep 2008
Wenn er mit FillChar das Record löscht, dann werden aber die "Strings" da drin nicht wirklich überschrieben, sondern nur die Pointer, oder seh ich das jetzt falsch?