Autor Beitrag
reimo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Do 16.12.04 10:15 
Hi,

habe folgendes Problem: ich möchte vom Hauptthread eine Message zum Subthread schicken in welcher als Parameter ein String übergeben wird, ich bekomms einfach nicht hin!
Bei den API-Funktionen (SendMessage, PostThreadMessage ) können nur Integer-Werte übergeben werden, wie kann ich aber einen String übertragen.
Ich könnte es zwar über ein shared-memory machen, aber lieber wäre mir eine andere variante, kann mir jemand weiterhelfen?

mfg
reimo
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Do 16.12.04 10:23 
Versuch mal die Übegabe als PChar gecastet zu Integer.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
reimo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Do 16.12.04 11:35 
Hi,
danke für die Antwort, es funktioniert, aber es ist auch eine Art von Shared-Memory, da über das Carsten des PCHAR auf Integer die Addresse des Strings verschickt wird und nicht der eigentliche String, aber diese möglichkeit gefällt mir besser als selbst ein globales shred-memory anzulengen.

Jetzt hätte ich noch eine Frage zum PCHAR:
wird der Speicher für eine Variable dieses Typs automatisch angelegt, oder muss ich mich darum kümmern
und was geschieht in diesem Fall:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
test: PCHAR;

test := '324234';
test := '1';
test := 'dsgds';


wird hier für jede Zuweisung Speicher neu angelegt und es entstehen speicherlecks?

was geschieht, mit dem Speicher einer LOKALEN Varaible vom Typ PCHAR wenn die ihre Funktion verlassen wird ?

Danke

mfg,
reimo
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Do 16.12.04 13:01 
Normalerweise kümmert sich Delphi bei Zuweisungen selber um die Speicherzuweisung. Eine Ausnahme ist aber, wenn du Puffer iner bestimmten Größe anlegen willst ODER eine Zuweisung PChar --> PChar machst. In diesen Fällen musst du dich selber um die Freigabe kümmern.

Aber da ich meist nur mit PChar-Puffern arbeite, bin ich mir da jetzt net ganz sicher ... Evtl. sollten sich Informationen dazu auch in der DOH noch finden lassen.

Aber wenn du einfach eine String-Konstante zuweist, wird vom Programm selber überhaupt kein Speicher reserviert, da einfach nur ein Zeiger auf die entsprechende Stelle gelegt wird.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
reimo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Do 16.12.04 15:08 
hi

hab mich etwas mit den Pchars und mehreren threads, die über pchar auf gleichen speicherbereich zugreifen gespielt und hab beschlossen mich selbst um die speicherverwaltung zu kümmern (AllocMem,...)!
es erscheint mir in manchen fällen nicht ganz logisch wie sich delphi verhält, oder anders gesagt ich kapiers nicht!

irgendwie erschien mir der umstieg von pascal auf C/C++ einfacher als jetzt der umstieg von C/C+ auf delphi!!

danke

mfg
reimo
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Do 16.12.04 21:20 
Dann will ich dich mal glücklich machen:

Delphi kennt auch die lstr*- und str*-Funktionen von C++. Die verhalten sich auch genauso ...

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.