![]() |
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:
Das geht aber nicht, da in Paramcount dann wieder unter DOS-Zeiten so ein Sinuszeichen '~' drin steht.
for i := 0 to Filelistbox1.Count - 1 do
p := pos(extractfilename(Paramstr(1)),Filelistbox1.items[i]); if p > 0 then Filelistbox1.Selected[p] := true; 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. |
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. |
Re: start des Programms über Explorer. Komisches Zeichen aus
Moin padavan,
schau Dir mal ![]() 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 ;-)) |
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:
Zu meiner Ernüchterung bekomme ich da aber nur 'TIMage' oder sowas.
image1.picture.getnamepath
: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 |
Re: start des Programms über Explorer. Komisches Zeichen aus
Hallo padavan,
vielleicht hilft dir diese kleine Funktion:
Delphi-Quellcode:
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.
// 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; Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr. |
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