Ich hoffe, ihr könnt mir helfen, sonst werde ich hier noch verrückt!
Also: In meinem Listaller-Projekt wird ein Record mit folgendem Aufbau generiert:
Code: Alles auswählen
TAppInfo = record
Name: PChar;
ShortDesc: PChar;
Version: PChar;
Author: PChar;
Icon: PChar;
UId: PChar;
Group: TGroupType;
end;
Code: Alles auswählen
TAppEvent = function(name: PChar;obj: TAppInfo): Boolean;cdecl;
immer, wenn das Event ausgelöst wird, erstellt die Hauptanwendung ein neues Objekt vom Type TListEntry und schreibt dort die Informationen Name, ShortDesc, Author, Icon und Version rein. Gleichzeitig wird einem TAppInfo-Recotd innerhalb des TListEntry-Objektes, alle Werte des Callback-Listobjektes übergeben.
Jetzt passiert folgendes:
Alle Werte werden perfekt Gesetzt, die Captions der Labels auf einem TListEntry-Objekt haben also die korrekten werte. Will man jetzt aber einen Wert des Internen TAppInfo-Records einer Liste auslesen, so erhält man willkürlich irgendwelche Strings, die mal im Speicher waren. Warum? Warum funktioniert das Auslesen der richtigen Werte einmal und dann nie wieder? Das verhalten lässt auf fehlerhafte Pointer schließen, ich kann aber keine Fehler entdecken.
(Die Lib sowie das Hauptprogramm haben die Unit cthreads eingebunden, da in andreren Teilen der Lib exzessiv Threads genutzt werden, die Unit cmem ist jedoch nicht enthalten, da diese einige kuriose Fehler verursacht. Das Projekt wird mit FPC 2.3.1 kompiliert.)