Auch bei C++ würde ich nicht ganz zustimmen, denn eine Klasse ist ja etwas, das erst initialisiert werden muss, während ein struct/record davon unabhängig ist (es sei denn natürlich, man nähme einen Zeiger darauf...).
Und da dann records in Delphi durchaus doch "Methoden" (bzw. Funktionen und Prozeduren) beinhalten dürfen, ist das Chaos komplett
Um mal auf die ursprüngliche Frage zu antworten:
Delphi-Quellcode:
type
_gettextex = record
cb, flags: DWORD;
codepage: UINT;
lpDefaultChar: LPCSTR;
lpUsedDefaultChar: LPBOOL;
end;
GETTEXTEX = _gettextex;
// [...]
var tex: ^GETTEXTEX;
dwSize: DWORD;
pc: PChar;
begin
New(tex);
dwSize := 4096;
tex^.cb := dwSize;
tex^.flags := GT_USECRLF;
tex^.codepage := CP_ACP;
tex^.lpDefaultChar := nil;
tex^.lpUsedDefaultChar := nil;
GetMem(pc, dwSize);
SendMessage(controlHandle, EM_GETTEXTEX, tex, pc);
DoSomethingWithResult(tex);
FreeMem(pc, dwSize);
Dispose(tex);
end;
Anhand der Doku geraten, nicht ausprobiert
Und anstelle einer festen Größe sollte man natürlich vorher per anderer Message (EM_GETTEXTLEN oder was es da evtl. gibt) die notwendige Größe bestimmten.
Hmmmm...
oh, jetzt kam noch jemand anders dazwischen... wird mein Post trotzdem nicht überflüssig, denn da ist was falsch: cb ist NICHT für die Größe von lpDefaultChar, sondern für die des PChars im lParam