AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Pfad beim PickIconDialog wird gekürzt
Thema durchsuchen
Ansicht
Themen-Optionen

Pfad beim PickIconDialog wird gekürzt

Ein Thema von ringli · begonnen am 21. Mär 2005 · letzter Beitrag vom 22. Mär 2005
Antwort Antwort
ringli

Registriert seit: 7. Okt 2004
510 Beiträge
 
Delphi 11 Alexandria
 
#1

Pfad beim PickIconDialog wird gekürzt

  Alt 21. Mär 2005, 17:50
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?

Delphi-Quellcode:
function PickIconDlg(Handle: THandle; FileName: PChar; FileNameSize: integer;
  var IconIndex: Integer): Boolean; stdcall; external 'shell32.dllindex 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;
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Pfad beim PickIconDialog wird gekürzt

  Alt 22. Mär 2005, 10:35
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));
Andreas
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
510 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Pfad beim PickIconDialog wird gekürzt

  Alt 22. Mär 2005, 16:02
Delphi-Quellcode:
// Richtig (aber ungetestet)
  StringToWideChar(iconfile, @buf[1],length(buf));
So funktionierts!

Vielen, vielen Dank für deine Hilfe.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz