Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi start des Programms über Explorer. Komisches Zeichen aus DOS (https://www.delphipraxis.net/61712-start-des-programms-ueber-explorer-komisches-zeichen-aus-dos.html)

padavan 25. Jan 2006 13:35


start des Programms über Explorer. Komisches Zeichen aus DOS
 
Hallo Leute,

bin auch mal wieder da
:-D

Habe eine, so glaube ich, recht Grundlegende Frage zu Windows bzw. DOS

Folgendes Szenario:
{Handelt sich im Groben erstmal um ein Manager mit Bildanzeige (nicht der eigentlich Sinn des Programms, aber so weit so gut)}

Ich starte mein Programm also nun über den Explorer und lade in dem Fall das Bild welches ich im Explorer angeklickt habe mit Paramcount/ Paramstr in ein Image.
Das reinladen klappt auch.
Dann stelle ich auch gleich eine Shelltreeview und eine Filelistbox auf den Pfad aus Paramcount ein.

Klappt alles wunderbar.

Jetzt das Problem, will natürlich, dass das reingeladene Bild auch dann gleich in der Filelistbox selektiert wird.
Das wollte ich so lösen:

Delphi-Quellcode:
for i := 0 to Filelistbox1.Count - 1 do
  p := pos(extractfilename(Paramstr(1)),Filelistbox1.items[i]);
if p > 0 then
  Filelistbox1.Selected[p] := true;
Das geht aber nicht, da in Paramcount dann wieder unter DOS-Zeiten so ein Sinuszeichen '~' drin steht.
Wie schlüsselt man das dann richtig auf. Gehen muss es ja irgenwie, sonst wüsste das Image ja auch nicht was es laden soll.

3_of_8 25. Jan 2006 13:39

Re: start des Programms über Explorer. Komisches Zeichen aus
 
Das ist eine Tilde.

Und MSDOS nutzt die, um längere Dateinamen zu verarbeiten. Aber weiter weiß ich nicht mehr.

Christian Seehase 25. Jan 2006 20:58

Re: start des Programms über Explorer. Komisches Zeichen aus
 
Moin padavan,

schau Dir mal MSDN-Library durchsuchenGetLongPathName an.
Die mit ~ sind die ShortPathNames, also die Darstellung des Pfadnamens in der 8.3 Konvention.
(zumindest in der Standardeinstellung, man kann das auch anders einstellen, aber ich kenne bewusst niemanden der das macht ;-))

padavan 26. Jan 2006 09:17

Re: start des Programms über Explorer. Komisches Zeichen aus
 
Aha,
da es Einstellungssache ist, könnte es unter einer anderen Umgebung funktionieren? (muss ich mal irgendwie ausprobieren).
Was mir halt unlogisch erscheint ist, dass ich das Bild ja auch nicht anders in das Image lade.
Und da das reinladen in das Image ja ohne Probleme klappt, habe ich versucht den Pfadnamen+Dateinamen wieder rückwärts aus dem Image rauszuladen.
so in etwa:

Delphi-Quellcode:
image1.picture.getnamepath
Zu meiner Ernüchterung bekomme ich da aber nur 'TIMage' oder sowas.
:gruebel:

Wenn mir evtl. jemand nen Tipp geben könnte, wie ich evtl. so weiterkomme?!

@ Christian_Seehase
Deinen link habe ich mir angeschaut, aus den Windows-Kommandos werd ich nie ganz schlau.
Ich müsste mir wohl eine Prozedur anlegen, in welcher ich das Getlongpathname zurückbekomme?!

Danke schonmal
Padavan

marabu 26. Jan 2006 10:13

Re: start des Programms über Explorer. Komisches Zeichen aus
 
Hallo padavan,

vielleicht hilft dir diese kleine Funktion:

Delphi-Quellcode:
// uses Windows;
function ShortPathName(const fileName: string): String;
var
  buf: array [0..MAX_PATH] of char;
begin
  SetString(Result, buf, GetShortPathName(PAnsiChar(fileName), @buf, MAX_PATH));
end;
Dein Problem mit den Namen entsteht dadurch, dass du die leicht verständliche aber veraltete FileListBox verwendest. Und die Image Komponente merkt sich den Namen der Datei nicht, aus der du das Bild geladen hast. Das musst du selbst tun.

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:59 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