Bleiben wir bei dem Beispiel, dass wir eine Datei mit dem Öffnen-Dialog ausgewählt haben und nun im Eingabefeld unseres Mini-Editors anzeigen möchten. Dazu holen wir uns zunächst ein Handle auf die Datei und fordern Speicher an:
hFile := CreateFile(buffer, GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
{ Speicher anfordern } hMemory := GlobalAlloc(GMEM_MOVEABLE or GMEM_ZEROINIT, MEMSIZE);
Wenn das erledigt ist, holen wir uns die Adresse des ersten Bytes des eben angelegten Speicherobjektes
pMemory := GlobalLock(hMemory);
lesen die Datei und übertragen Sie mit "WM_SETTEXT" in unser Eingabefeld:
ReadFile(hFile, pMemory^, MemSize-1, SizeReadWrite, nil);
SendMessage(Edit, WM_SETTEXT, 0, Integer(pMemory)); SendMessage(Edit, EM_SETSEL, 0, 0);
Und zum Schluss wird aufgeräumt:
CloseHandle(hFile); GlobalUnlock(CARDINAL(pMemory)); GlobalFree(hMemory);
Zum Lesen der Daten (in dem Fall max. 64k) benutzen wir die Funktion
lpNumberOfBytesRead (im Code: "SizeReadWrite"). Er liefert uns die Anzahl der tatsächlich gelesenen Bytes zurück. Zwar wird dieser Wert im Beispiel nicht weiter beachtet, aber er kann in Ihren Programmen der Fehlerkontrolle dienen.