Entwickler-Ecke
Windows API - Daten zwischen zwei threads austauschen (im selben process)
reimo - Do 16.12.04 10:15
Titel: Daten zwischen zwei threads austauschen (im selben process)
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 - Do 16.12.04 10:23
Versuch mal die Übegabe als PChar gecastet zu Integer.
reimo - 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:
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 - 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.
reimo - 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 - 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 ...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!