Forum: Object-Pascal / Delphi-Language
by himitsu,
27. Jun 2014
Nein, SendMessage/PostMessage ist in Threads kein Problem.
Beides trägt die Message in den MessageQueue des Threads ein, in welchem die Komponente erstellt wurde, an die die Message geht.
Verarbeitet wird die Message dann immer von der Messagebehandlung im zugehörigen Thread (meist der Hauptthread).
TThread.Queue ist wie Synchronize, außer daß die Prozedur nicht sofort verarbeitet wird....
Forum: Object-Pascal / Delphi-Language
by himitsu,
26. Jun 2014
Ob Object oder Record-Pointer, ist fast egal. (der kleiner Overhead des Objects fällt hier praktisch garnicht auf)
Aber wenn schon globale Variable, warum dann einen Record-Pointer?
Der Record direkt als Variable und keiner muß den mehr freigeben und auch vorher nicht erstellen.
PS: Wenn es die globale Variable gibt, dann fällt eigentlich sofort auf, daß man sich hier den Parameter sparen...
Forum: Object-Pascal / Delphi-Language
by himitsu,
26. Jun 2014
Nja, man kann einen Pointer einem Objekt zuweisen ... Delphi interpretiert das dann sozusagen als TObject, welches intern ja ebenfalls ein Pointer ist.
Aber wie ich vorher shcon sagte:
Wenn man die globale Variable referenziert (@) und darauf den Zeiger überbergibt, dann muß am Ziel auch dieser Zeiger erstmal dereferenziert (^) werden,
und wenn man direkt den Objektzeiger übergibt, dann muß...
Forum: Object-Pascal / Delphi-Language
by himitsu,
26. Jun 2014
Integer ist nicht gut, stell dir mal vor man verwendet den Code mal im Win64.
NativeInt, oder für Pointer besser IntPtr, oder im Fall von SendMessage/PostMessage den OriginalTyp LRESULT.
function SendMessage(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
Was mag wohl passieren, wenn mal zwei Threads zugleich diese Variable nutzen wollen?
Objekte sind schon...