Zitat von
sirius:
Du hast schon richtig geahnt, die Threads blockieren sich gegenseitig.
Der Speichermanager stellt sicher, dass nur ein Thread gleichzeitig auf ihn zugreift. Wobei ich jetzt nicht weis, was setlength mit einem shortstring macht.
btw.: Du solltest die ThreadProc (Haenge) mal mit einem 32-bit-Parameter und als stdcall deklarieren.
Die Frage ist nur, warum blockieren sich die Threads gegenseitig ?
Jeder Thread sollte seinen eigenen Heap mit eigenem String haben.
Kann es sein, daß der Speicher von den Thread geteilt wird ?
Mit Long/Huge-String passiert das Gleiche wie bei shortstring oder Ansistring.
Jeglicher Zugriff auf den Speicher mit z.B. P
char; getmem(P, 100);...
verursacht das selbe Problem, auch ohne SetLength
ich habe den Prozedurkopf wie folgt geändert:
procedure haenge (param_nicht_verwendet :longint); stdcall;
leider bleibt das Ergebnis gleich.