Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
14. Jan 2009
hmm, eigentlich sollte beides gehn (bei mir lief Beides ... aber nur mal kurz unter D7 getestet)
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
14. Jan 2009
GetMem reserviert nur Speicher
New reserviert und initialisiert den Speicher
ein dynamische Arrays und Strings müssen initialisiert werden, da die Speicherverwaltung dieser Strukturen sonst falsche Daten bekommt, as zu Fehlern führt.
wenn man weiß, wie initialisert werden muß, kann man es auch selber machen.
procedure TTestform.Button1Click(Sender: TObject);
Var testwert : string;
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
14. Jan 2009
die Lösung: du solltest den Speicher für die String-Variable richtig Initialisieren :warn:
GetMem(Bookmark^, sizeof(TBookmarkInfo));
FillChar(Bookmark^, sizeof(TBookmarkInfo), 0);
// oder halt gleich "New" - siehe Anhang
Das Problem ist nicht der übergebene String, sondern der nicht vorhandene, aber angeblich existierende alte String, welchen Delphi versucht freizugeben, bevor es den neuen...
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
14. Jan 2009
ganz Ehlich, in Verbindung mit diesem Problem solltest du nicht auf die Innere Struktur eingehen (falls sich mal was ändert gibt's Progleme)
aber so als Tipp: System.PStrRec
insgesamt ist es besser/einfacher, wenn du garnicht erst versuchst solche Typen wir Strings, dynamische Arrays und Objecte über solche grenzen hinweg zu nutzen ... gibt hier zwar genug Thread, wo man mit aller gewalt...