Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Explorer an einer bestimmten Stelle öffnen (https://www.delphipraxis.net/121569-explorer-einer-bestimmten-stelle-oeffnen.html)

Ajin 30. Sep 2008 14:53


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:
Showfolder('C:\Präsentationen\');
Funktioniert.

Delphi-Quellcode:
Showfolder('C:\Präsentationen');
Funktioniert ebenfalls. Nur

Delphi-Quellcode:
s := listbox1.Items[listbox1.ItemIndex];
Showfolder(s);
Klappt nicht obwohl in Variable s genau 'C:\Präsentationen\' drinsteht.

Ich hab sogar versucht den letzten Slash per copy zu entfernen damit s = 'C:\Präsentationen' beinhaltet. Auch das funktioniert nicht. Warum nur?

DeddyH 30. Sep 2008 14:55

Re: Explorer an einer bestimmten Stelle öffnen
 
Klappt es denn, wenn Du aus dem 'open' in ShowFolder ein 'explore' machst?

jbg 30. Sep 2008 14:56

Re: Explorer an einer bestimmten Stelle öffnen
 
Ich mache das immer so: "explorer.exe /e,C:\MeinVerzeichnis"

DeddyH 30. Sep 2008 15:00

Re: Explorer an einer bestimmten Stelle öffnen
 
Das sollte natürlich auch gehen, aber wenn es die Möglichkeit "explore" doch schon gibt...

Ajin 30. Sep 2008 15:09

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?

DeddyH 30. Sep 2008 15:18

Re: Explorer an einer bestimmten Stelle öffnen
 
Sollte eigentlich nicht sein, aber versuch es mal mit trim(s)

Ajin 30. Sep 2008 15:21

Re: Explorer an einer bestimmten Stelle öffnen
 
Fehlanzeige :(

Das gibts doch nicht!

mirage228 30. Sep 2008 16:00

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;

Ajin 30. Sep 2008 16:15

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.

roga 30. Sep 2008 16:22

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];

Ajin 30. Sep 2008 16:26

Re: Explorer an einer bestimmten Stelle öffnen
 
Hi roga

Delphi-Quellcode:
s := listbox1.Items.Strings[listbox1.ItemIndex];
hab ich mir schon ausgeben lassen, siehe mein Eröffnungspost 8)

Ajin 30. Sep 2008 16:49

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?

DeddyH 30. Sep 2008 17:00

Re: Explorer an einer bestimmten Stelle öffnen
 
Hab ich das richtig gesehen, dass Du nur die Dateinamen in der ListBox anzeigst?

Ajin 30. Sep 2008 18:10

Re: Explorer an einer bestimmten Stelle öffnen
 
Es wird der komplette Pfad ohne Dateiname in der Listbox festgehalten.

C:\Programme\Office\Bla.doc

TurboMartin 30. Sep 2008 18:29

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...

DeddyH 30. Sep 2008 18:31

Re: Explorer an einer bestimmten Stelle öffnen
 
Der wäre aber durch trim() wieder entfernt worden.

TurboMartin 30. Sep 2008 18:56

Re: Explorer an einer bestimmten Stelle öffnen
 
Zitat:

Zitat von DeddyH
Der wäre aber durch trim() wieder entfernt worden.

Nein, bei mir, habs getestet, ist es nicht weg.
Probiers mal mit SetLength(s, Length(s)-2);

Die Muhkuh 30. Sep 2008 19:05

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;

Ajin 1. Okt 2008 08:07

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!

DeddyH 1. Okt 2008 08:10

Re: Explorer an einer bestimmten Stelle öffnen
 
Dann verstehe ich aber nicht, wieso das nicht schon nach #6 funktioniert hat :gruebel:

Hawkeye219 1. Okt 2008 08:23

Re: Explorer an einer bestimmten Stelle öffnen
 
Hallo Detlef,

Zitat:

Zitat von DeddyH
Dann verstehe ich aber nicht, wieso das nicht schon nach #6 funktioniert hat :gruebel:

wenn ich die auskommentierte Zeile in Beitrag #18 sehe, dann verstehe ich das schon...

Gruß Hawkeye

DeddyH 1. Okt 2008 08:29

Re: Explorer an einer bestimmten Stelle öffnen
 
Die kam aber von Manuel ;)

p80286 1. Okt 2008 11:51

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:
Trim(listbox1.Items[listbox1.ItemIndex]);
halte ich für Frikkelei.

Gruß
K-H

Die Muhkuh 1. Okt 2008 17:16

Re: Explorer an einer bestimmten Stelle öffnen
 
Zitat:

Zitat von DeddyH
Die kam aber von Manuel ;)

Das auskommentierte Trim(S) kommt nicht von mir. Vielleicht hab ich es auskommentiert, aber ich hab es da nicht hingeschrieben ;)

DeddyH 1. Okt 2008 18:08

Re: Explorer an einer bestimmten Stelle öffnen
 
Ist ja schon gut *kopftätschel* :lol:

Die Muhkuh 1. Okt 2008 18:10

Re: Explorer an einer bestimmten Stelle öffnen
 
Zitat:

Zitat von DeddyH
Ist ja schon gut *kopftätschel* :lol:

Vorsicht: Bissig. Eltern haften für ihre Kinder. :stupid:


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