Hallo,
ich habe mir eure Verbesserungsvorschläge mal zu Herzen genommen und den Code umgestaltet.
Delphi-Quellcode:
IDC_BUTTON_CREATEMANIFEST:
begin
GetMem(lFileName, GetWindowTextLength(hWndEdit) + Length(_manifestext));
GetMem(lAppTitle, GetWindowTextLength(hWndAppEdit));
try
// ZeroMemory
ZeroMemory(lFileName, sizeOf(lFileName));
ZeroMemory(lAppTitle, sizeOf(lAppTitle));
GetWindowText(hWndEdit, lFileName, GetWindowTextLength(hWndEdit) + 1);
// append .manifest
lstrcat(lFileName, _manifestext);
// prepare .manifest-file
AssignFile(ManifestFile, lFileName);
ReWrite(ManifestFile);
// create manifest string
GetWindowText(hWndAppEdit, lAppTitle, GetWindowTextLength(hWndAppEdit) +1 );
manifest := CreateManifestString(lAppTitle);
// write manifest string into the file
Write(ManifestFile, manifest);
CloseFile(ManifestFile);
// if operation is successfull
if GetLastError <> 0 then
MessageBox(hWnd, 'Vorgang abgeschlossen - Manifest erstellt!', 'Information', MB_ICONINFORMATION + MB_OK) else
MessageBox(hWnd, 'Es ist ein Fehler beim Erstellen der Manifestdatei aufgetreten!', 'Fehler', MB_ICONERROR + MB_OK);
finally
FreeMem(lFileName);
FreeMem(lAppTitle);
end; // finally
end; // case IDC_BUTTON_CREATEMANIFEST
Eins fand ich aber doch noch seltsam:
Wenn ich
GetWindowText(hWndEdit, lFileName, sizeOf(lFileName));
verwende, kriege ich in lFileName nur die ersten 3 Zeichen des Textes gespeichert (war mit allen Möglichkeiten, wo ich bei GetWindowText sizeOf benutzt habe so). So wie ichs jetzt habe gehts...
Danke nochmals für eure Tipps!
mfG
mirage228
David F.