Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Dialog zur Icon-Auswahl (https://www.delphipraxis.net/27491-dialog-zur-icon-auswahl.html)

scp 11. Aug 2004 16:54

Re: Dialog zur Icon-Auswahl
 
Delphi-Quellcode:
ZeroMemory(@buf[1],length(buf));
Muss es bei WideString nicht length(buf)*2 heissen? ZeroMemory() arbeitet immer in Byte-Einheiten.

ToBmAsTeR 11. Aug 2004 17:06

Re: Dialog zur Icon-Auswahl
 
hoi

@scp
Delphi-Quellcode:
// "buf" auf MAX_PATH setzen, & leeren
{$IFDEF UNICODE}
SetLength(buf,MAX_PATH * 2);
{$ELSE}
SetLength(buf,MAX_PATH);
{$ENDIF}
ZeroMemory(@buf[1],length(buf));
der setzt doch den buffer bei widestring auf die doppelte länge.. wenn UNICODE definiert ist, benutzt der alles als wide.. (widestring, widechar, pwidechar).. da liegt auch nicht mein problem, das funzt alles

MFG
ToBmAsTeR

ToBmAsTeR 13. Aug 2004 00:36

Re: Dialog zur Icon-Auswahl
 
moiiin...


danke MathiasSimmack, Luckie und Gollum... :bounce2:


mein Programm funktioniert jetzt, hab ein wenig mit den umwandlungsfunktionen rumgespielt und mit dieser hier funktionierts:

Delphi-Quellcode:
{$DEFINE UNICODE} //for NT5 an higher

procedure TMainForm.PickIcon(hwndicon: HWND; var filename: string; var index: 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}
 buf := widestring(filename);
{$ELSE}
 buf := string(filename);
{$ENDIF}
 idx := index;
 // Dialog aufrufen
{$IFDEF UNICODE}
 if(PickIconDlg(hwndicon,pwidechar(buf),length(buf)+1,idx)) then
{$ELSE}
 if(PickIconDlg(hwndicon,pchar(buf),length(buf)+1,idx)) then
{$ENDIF}
 begin
{$IFDEF UNICODE}
 filename := string(buf);
{$ELSE}
 filename := string(buf);
{$ENDIF}
 index := idx;
 end;
end;
ich hoffe, dass das auch anderen usern hilft die den "Icon Auswählen"-Dialog von Windows benutzen wollen...

Zitat:

Vormerken für die CodeLib!!!
Ich hoffe, dass diese Funktion dort mal in irgendeiner Form erscheinen wird :wink:


Mfg und THX :hi:
ToBmAsTeR
:dp:

ps: ich werd jetzt noch den rest des programms fertigstellen und dann hier mal veröffentlichen :coder:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 Uhr.
Seite 2 von 2     12   

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