Zitat von
ringli:
Und zwar verwende ich folgenden Code um mir den Iconauswahldialog von Windows anzeigen zu lassen. Eigentlich funktioniert alles auch ganz gut, aber wenn der neu ausgewählte Pfad zu einem Icon länger ist als der alte, wird mir der Rest des Pfades abgeschnitten und ist somit nicht mehr brauchbar.
Delphi-Quellcode:
// Fehler: die Procedure PickIcon sollte ein ganz normale Prozedure sein,
// keine METHODE von TfrmEditApp
procedure TfrmEditApp.PickIcon(hwndicon: HWND; var iconfile : string; var iconindex: integer);
var
buf : widestring;
idx : Integer;
begin
// buf wird mit korrekter Länge angelegt
SetLength(buf,MAX_PATH * 2);
ZeroMemory(@buf[1],length(buf));
// Fehler: Buffer wird durch neuen String ersetzt
buf := widestring(iconfile);
// Richtig (aber ungetestet)
StringToWideChar(iconfile, @buf[1],length(buf));