Thema: Delphi Dialog zur Icon-Auswahl

Einzelnen Beitrag anzeigen

ToBmAsTeR

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

Re: Dialog zur Icon-Auswahl

  Alt 11. Aug 2004, 16:42
hoi...



entweder sind die functions und procedures total kompliziert oder ich einfach nur zu blöd..

@MathiasSimmack:
Zitat:
pchar(StringVariable)
pwidechar(StringVariable)
das hab ich ja schon probiert.. dann kommt diese fehlermeldung "datei ■■■■■■ nicht gefunden"

und das mit stringtowidechar raff ich irgendwie nicht..
angewendet wird die function doch so oder:
stringtowidechar(iconfile, pwidecharvariable, length(iconfile)); und dann:
lstrcpyW(@buf[1],pwidecharvariable); so hab ich das verstanden.. aber funzenuckelt leider nich.. schmiert genau an dieser stelle mit 'ner zugriffsverletzung sonstwas in kernel32.dll ab...

irgendwie muss das doch machbar sein 'ne stringvarable in die widestring-variable "buf" reinzubekommen

so siehts im moment im sourcecode aus:
Delphi-Quellcode:
procedure TMainForm.PickIcon(hwndicon: HWND; var iconfile: string; var iconindex: integer);
var
{$IFDEF UNICODE}
  pwidecharvariable: pwidechar;
  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}
 stringtowidechar(iconfile,pwidecharvariable,length(iconfile));
 lstrcpyW(@buf[1],pwidecharvariable);
{$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;
thx für eure mitarbeit
ToBmAsTeR
  Mit Zitat antworten Zitat