Thema: Delphi Dialog zur Icon-Auswahl

Einzelnen Beitrag anzeigen

ToBmAsTeR

Registriert seit: 8. Nov 2003
Ort: Moers
13 Beiträge
 
#6

Re: Dialog zur Icon-Auswahl

  Alt 11. Aug 2004, 14:33
moiin...


ein problem gelöst.. nun hab ich gleich das nächste.

den dialog kann ich jetzt problemlos öffnen, den dateinamen und den index bekomm ich auch ohne probleme raus, nur das öffnen einer angegebenen datei klappt leider nich so ganz.

ich hab das hier fast komplett aus dem beispielprogramm übernommen, geändert habe ich nur ein paar namen der variablen, das ist auch nicht das problem.


Delphi-Quellcode:
procedure TMainForm.PickIcon(hwndicon: HWND; var iconfile: string; var iconindex: integer);
var
{$IFDEF UNICODE}
  buf : widestring;
{$ELSE}
  buf : string;
{$ENDIF}
  idx : dword;
begin
 // "buf" auf MAX_PATH setzen, & leeren
{$IFDEF UNICODE}
 SetLength(buf,MAX_PATH * 2);
{$ELSE}
 SetLength(buf,MAX_PATH);
{$ENDIF}
 ZeroMemory(@buf[1],length(buf));

 // "iconfile" als Ausgangspunkt festlegen
{$IFDEF UNICODE}
 lstrcpyW(@buf[1],pwidechar(iconfile));
{$ELSE}
 lstrcpy(@buf[1],pchar(iconfile));
{$ENDIF}

 // Dialog aufrufen
{$IFDEF UNICODE}
 if(PickIconDlg(hwndicon,pwidechar(buf),length(buf),idx)) then
{$ELSE}
 if(PickIconDlg(hwndicon,pchar(buf),length(buf),idx)) then
{$ENDIF}

 begin
{$IFDEF UNICODE}
  buf := widestring(buf);
  iconfile := string(buf);
  iconindex := idx;
{$ELSE}
  buf := string(buf);
  iconfile := buf;
  iconindex := idx;
{$ENDIF}
 end;
end;

das eigentliche problem tritt in diesen zeilen auf:
Delphi-Quellcode:
 // "iconfile" als Ausgangspunkt festlegen
{$IFDEF UNICODE}
 lstrcpyW(@buf[1],pwidechar(iconfile));
{$ELSE}
 lstrcpy(@buf[1],pchar(iconfile));
{$ENDIF}
iconfile ist eine string-variable, der in der dieser prozedur ein dateiname übergeben wird, aber das funzt nicht.. obwohl es ja eigentlich das gleiche ist wie das hier (bis auf die variable):
Delphi-Quellcode:
// "explorer.exe" als Ausgangspunkt festlegen
{$IFDEF UNICODE}
 lstrcpyW(@buf[1],'explorer.exe');
{$ELSE}
 lstrcpy(@buf[1],'explorer.exe');
{$ENDIF}
(stammt aus dem beispiel von MathiasSimmack)

was ich jetzt nicht raffe, dass da String nicht gleich String ist
oder mag der an dieser stelle keine absoluten pfadangaben (c:\windows\explorer.exe) die aus einer string variable kommen, anstatt direkt als string ('c:\windows\explorer.exe')?

ich hoffe ihr könnt mir weiterhelfen...

in der zwischenzeit mach ich mir gedanken über eine history und backup-funktion meines programms

thx schonmal
ToBmAsTeR

[EDITED] gramatikalische und sonstige fehlaaa [/EDITED]
  Mit Zitat antworten Zitat