![]() |
Explorer an einer bestimmten Stelle öffnen
Hallo DP!
Ich durchsuche meine Festplatte nach z.B. Powerp*int Präsentationen und liste die Ergebnis in einer Listbox auf. Ein Beispieleintrag sieht z.B. so aus: C:\Präsentationen\ Mittels Doppelklick auf einen Eintrag in der Listbox soll ein Explorerfenster an der richtigen Stelle aufgeben. Das wollte ich so lösen:
Delphi-Quellcode:
////////////////////////////////////////////////////////////////////////////////
//// //// Ordner Öffnen //// procedure ShowFolder(strFolder: string); begin ShellExecute(Application.Handle, PChar('open'), PChar(strFolder), nil, nil, SW_SHOWNORMAL); end; procedure TFmain.ListBox1DblClick(Sender: TObject); var s:string; begin s := listbox1.Items[listbox1.ItemIndex]; Showfolder(s); end; Das klappt nicht, es wird kein Explorer angezeigt. Sehr seltsam. Ich habe es dann dann manuell getestet:
Delphi-Quellcode:
Funktioniert.
Showfolder('C:\Präsentationen\');
Delphi-Quellcode:
Funktioniert ebenfalls. Nur
Showfolder('C:\Präsentationen');
Delphi-Quellcode:
Klappt nicht obwohl in Variable s genau 'C:\Präsentationen\' drinsteht.
s := listbox1.Items[listbox1.ItemIndex];
Showfolder(s); Ich hab sogar versucht den letzten Slash per copy zu entfernen damit s = 'C:\Präsentationen' beinhaltet. Auch das funktioniert nicht. Warum nur? |
Re: Explorer an einer bestimmten Stelle öffnen
Klappt es denn, wenn Du aus dem 'open' in ShowFolder ein 'explore' machst?
|
Re: Explorer an einer bestimmten Stelle öffnen
Ich mache das immer so: "explorer.exe /e,C:\MeinVerzeichnis"
|
Re: Explorer an einer bestimmten Stelle öffnen
Das sollte natürlich auch gehen, aber wenn es die Möglichkeit "explore" doch schon gibt...
|
Re: Explorer an einer bestimmten Stelle öffnen
Ich habe 'open' durch 'explore' ersetzt, keine Wirkung.
Steht in dem 's' noch irgendwas zusätzliches drin dass man mit einer Showmessge(s) auf den ersten Blick nicht sehen kann? Evtl. Steuerzeichen oder sowas? |
Re: Explorer an einer bestimmten Stelle öffnen
Sollte eigentlich nicht sein, aber versuch es mal mit trim(s)
|
Re: Explorer an einer bestimmten Stelle öffnen
Fehlanzeige :(
Das gibts doch nicht! |
Re: Explorer an einer bestimmten Stelle öffnen
Lass Dir mal die Fehlermeldung von ShellExecute ausgeben...
Delphi-Quellcode:
if ShellExecute(Self.Handle, 'explore', PChar(Folder), nil, nil, SW_SHOWNORMAL) <= 32 then
RaiseLastOSError; |
Re: Explorer an einer bestimmten Stelle öffnen
Interessant, das gibt folgendes Feedback:
System Error. Code : 2. Das System kann die angegebene Datei nicht finden. ALso ist doch was Faul am String 's' - obwohl er gemäß Showmessage 'C:\Präsentationen' lautet. |
Re: Explorer an einer bestimmten Stelle öffnen
Hallo,
wird der Listeneintrag auch korrekt übergeben? Vielleicht mal testen: showmessage(listbox1.Items[listbox1.ItemIndex]); oder vielleicht so: s := listbox1.Items.Strings[listbox1.ItemIndex]; |
Re: Explorer an einer bestimmten Stelle öffnen
Hi roga
Delphi-Quellcode:
hab ich mir schon ausgeben lassen, siehe mein Eröffnungspost 8)
s := listbox1.Items.Strings[listbox1.ItemIndex];
|
Re: Explorer an einer bestimmten Stelle öffnen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo DP,
Ich habe mal das Programm in den Anhang gehängt - es sind nur knapp 9KB, evtl. mag es sich ja wer anschauen. Was ich auch nicht ganz verstehe: wann ist die Suche denn genau beendet? |
Re: Explorer an einer bestimmten Stelle öffnen
Hab ich das richtig gesehen, dass Du nur die Dateinamen in der ListBox anzeigst?
|
Re: Explorer an einer bestimmten Stelle öffnen
Es wird der komplette Pfad ohne Dateiname in der Listbox festgehalten.
C:\Programme\Office\Bla.doc |
Re: Explorer an einer bestimmten Stelle öffnen
Ich hab da grad was am Ende des Strings entdeckt:
Pfad + #$D + #$A Da hängt der Zeilenumbruch noch mit dran... |
Re: Explorer an einer bestimmten Stelle öffnen
Der wäre aber durch trim() wieder entfernt worden.
|
Re: Explorer an einer bestimmten Stelle öffnen
Zitat:
Probiers mal mit SetLength(s, Length(s)-2); |
Re: Explorer an einer bestimmten Stelle öffnen
Quark, natürlich geht es weg und danach funktioniert es auch:
Delphi-Quellcode:
s := Trim(listbox1.Items[listbox1.ItemIndex]);
showmessage(listbox1.Items[listbox1.ItemIndex]); //trim(s); if ShellExecute(Application.Handle, PChar('explore'), Pchar(s), nil, nil, SW_SHOWNORMAL) <= 32 then RaiseLastOSError; |
Re: Explorer an einer bestimmten Stelle öffnen
Guten Morgen!
Ich wusste dass wieder einmal (auf den ersten Blick) nicht sichtbare Steuerzeichen mein Vorhaben scheitern lassen. Ich sollte mehr Milch trinken :stupid: Vielen Dank liebe Muhkuh und an alle anderen Beitragsverfasser! |
Re: Explorer an einer bestimmten Stelle öffnen
Dann verstehe ich aber nicht, wieso das nicht schon nach #6 funktioniert hat :gruebel:
|
Re: Explorer an einer bestimmten Stelle öffnen
Hallo Detlef,
Zitat:
Gruß Hawkeye |
Re: Explorer an einer bestimmten Stelle öffnen
Die kam aber von Manuel ;)
|
Re: Explorer an einer bestimmten Stelle öffnen
Hallo zusammen,
warum werden die Daten eigentlich nicht "vor" der Anzeige aufbereitet? Meiner Meinung nach gehören in die Listbox "saubere" Daten. Dieses
Delphi-Quellcode:
halte ich für Frikkelei.
Trim(listbox1.Items[listbox1.ItemIndex]);
Gruß K-H |
Re: Explorer an einer bestimmten Stelle öffnen
Zitat:
|
Re: Explorer an einer bestimmten Stelle öffnen
Ist ja schon gut *kopftätschel* :lol:
|
Re: Explorer an einer bestimmten Stelle öffnen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 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