Registriert: Mi Jan 31, 2007 18:32 Beiträge: 150
Programmiersprache: Pascal
als ich benutze in meinem Programm eine StringList um Texturnamen zu speichern wenn ich jedoch die add procedure aufrufe und eine Variable übergebe speichert er siese nur als pointer auf die Variable mein problem ist nun das ich die namen aus einer Datei lese bzw einem Stream sich die Variable also ändert...wenn ich dann die indexOff function benutze tritt ein exception auf....
Frage stimmt das mit den pointer hat sich mir z mindestens so erschlossen
Wenn ja was kann ich da machen....
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Habe das Thema mal ins Allgemeine verschoben.
Also eigentlich speichert eine TStringList die Strings ab und nicht nur die Pointer. Evtl hast du es geschafft da intern irgendetwas auszutricksen. Poste mal bitte den Code an dem du den String lädst und an dem du ihn hinzufügst. Und was halt so wichtig ist.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Strings sind normal lediglich Pointer. Bei Stream.Read musst du aber einen Speicherbereich angeben in die gelesen wird. Durch das Var, in dem Paramater von Read, wird aber intern ein Pointer übergeben. Also hat die Read Methode nicht die Adresse von dem Buffer bekommen sondern die Adresse von der Variable Str.
Du musst also entsprechend den Anfang des Stringbuffers übergeben.
Code:
AStream.Read(Str[1], StrSize);
PS: Wenn die Strings größer als 4 Bytes sind dann wurde auch bereits in einen anderen Speicherbereich geschrieben. Was an späteren Stellen zu Fehlern führen kann. Du solltest also noch mal überprüfen ob du sonst noch wo strings ausließt.
PPS: Der String dürfte im Debugger aber schon falsch ausgesehen haben, da dessen Pointer überschriebe wurde.
Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.