![]() |
Pfad beim PickIconDialog wird gekürzt
Hallo, ich hoffe ihr könnt mir mal wieder helfen. :)
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. Hat einer von Euch vielleicht eine Idee was ich falsch mache? :gruebel:
Delphi-Quellcode:
function PickIconDlg(Handle: THandle; FileName: PChar; FileNameSize: integer;
var IconIndex: Integer): Boolean; stdcall; external 'shell32.dll' index 62; procedure TfrmEditApp.PickIcon(hwndicon: HWND; var iconfile : string; var iconindex: integer); var buf : widestring; idx : Integer; begin SetLength(buf,MAX_PATH * 2); ZeroMemory(@buf[1],length(buf)); buf := widestring(iconfile); idx := iconindex; if(PickIconDlg(hwndicon, PChar(PWideChar(buf)), length (buf), idx)) then begin buf := widestring(buf); iconfile := string(buf); iconindex := idx; end; end; {*** Iconauswahldialog aufrufen ***} procedure TfrmEditApp.btnIconDlgClick(Sender: TObject); var FileName : String; Idx: Integer; begin if aAppIcon.Text = '' then begin FileName := aAppPfad.Text; Idx := 0; end else begin FileName := aAppIcon.Text; Idx := StrToInt(aAppIconNr.Text); end; PickIcon(Handle, Filename, Idx); aAppIcon.Text := Filename; aAppIconNr.Text := IntToStr(Idx); end; |
Re: Pfad beim PickIconDialog wird gekürzt
Zitat:
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)); |
Re: Pfad beim PickIconDialog wird gekürzt
Delphi-Quellcode:
So funktionierts! :dancer:
// Richtig (aber ungetestet)
StringToWideChar(iconfile, @buf[1],length(buf)); Vielen, vielen Dank für deine Hilfe. :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz