Entwickler-Ecke

Dateizugriff - CD-Rom-Inhalt auf ButtonClick anzeigen


Moritz - Di 22.04.03 18:15
Titel: CD-Rom-Inhalt auf ButtonClick anzeigen
Hallo!

ich möchte gerne für ein Autostartprogramm auf einer CD die Möglichkeit
einbauen, dass der Benutzer nach klick auf einen Button den Inhalt der CD angezeigt bekommt.
Wie bekomme ich das hin?

Vielen Dank!


LCS - Di 22.04.03 20:11

Hi
am einfachsten mit ShellExecute den Befehl open, und als Parameter den Laufwerksbuchstaben und das Rootverzeichnis des CD-ROMs angeben.

Gruss Lothar


Moritz - Di 22.04.03 20:35

Hallo!

erst mal vielen Dank für die Antwort!

Ich habe das jetzt so gemacht:

Quelltext
1:
2:
3:
4:
procedure TForm1.Button3Click(Sender: TObject);
 begin
  ShellExecute(Handle, 'open', 'D:\', '', '', 0);
 end;

Wobei Button3 der Button ist, der das CD-Verzeichnis öffnen soll.

Allerdings passiert nichts.


wulfskin - Di 22.04.03 22:20

Hallo Moritz!

So geht's:

Quelltext
1:
2:
  ShellExecute(Handle, 'explore', PChar(ExtractFileDrive(Application.ExeName)),
    '', '', SW_SHOW);
Mehr zu ShellExecute findest du in der Windows Api Hilfe!

Gruß wulfskin!


LCS - Mi 23.04.03 09:32

Hi
Das Problem lag am letzten Parameter. Da sollte SW_SHOWNORMAL stehen. Ob die als Befehl open oder explore verwendest ist eigentlich egal.

Gruss Lothar


Terra23 - Mi 23.04.03 18:31

@Moritz:

Mal so als Einwand: Das Programm scheint für deinen Rechner zu funktionieren, weil dein CD-Laufwerk "D:\" ist.

Was ist denn aber, wenn jemand mehrere Partitionen hat und das CD-Laufwerk (so wie bei mir) "D:\" ist?

Da muß man das doch ermitteln, oder?

Ich hatte mal in der Schule mit GetDir zu tun und da ging das z.B. so:


Quelltext
1:
2:
3:
4:
5:
6:
7:
Var Pfad: String

procedure TForm1.Button1Click(Sender: TObject);
begin
GetDir(0, Pfad);
Label1.Caption:=Pfad;
end;


Wenn du 0 eingibst, spuckt Delphi dir den aktuellen Pfad aus, in dem sich das Tool befindet, z.B. C:\Eigene Dateien\Moritz\Delphi\CD-Programm\

Grüße, Alex..


wulfskin - Mi 23.04.03 19:21

Terra23 hat folgendes geschrieben:
Mal so als Einwand: Das Programm scheint für deinen Rechner zu funktionieren, weil dein CD-Laufwerk "D:\" ist.

Was ist denn aber, wenn jemand mehrere Partitionen hat und das CD-Laufwerk (so wie bei mir) "D:\" ist?
Schau mal meinen Beitrag an, da habe ich das etwas anders gelöst!


Terra23 - Mi 23.04.03 22:27

Ja, habe ich gemacht. :-) Du hast es gelöst, denke ich. Übrigens soll es bei mir nicht D: heißen, sondern E:\.

Grüße.


Delete - Do 24.04.03 08:19

Terra23 hat folgendes geschrieben:
Ich hatte mal in der Schule mit GetDir zu tun und da ging das z.B. so:


Quelltext
1:
2:
3:
4:
5:
6:
7:
Var Pfad: String

procedure TForm1.Button1Click(Sender: TObject);
begin
GetDir(0, Pfad);
Label1.Caption:=Pfad;
end;


Wenn du 0 eingibst, spuckt Delphi dir den aktuellen Pfad aus, in dem sich das Tool befindet, z.B. C:\Eigene Dateien\Moritz\Delphi\CD-Programm\

Na, da muss ich dich aber leider enttäuschen, Terra. Das klappt nämlich nur, solange das aktuelle Verzeichnis nicht geändert worden ist. Probier doch vorher mal folgendes:

Quelltext
1:
2:
3:
4:
procedure TForm1.Button2Click(Sender: TObject);
begin
  SetCurrentDir('d:\DuWeisstEsNichtBesser');
end;

und dann schau mal was dir dein erster Button anzeigt.

Das, was du meinst (sprich: den Pfad, in dem sich das Programm gerade befindet) bekommst du mit

Quelltext
1:
ExtractFilePath(paramstr(0));                    

Gruß.


Terra23 - Do 24.04.03 19:21

@Mathias:

Naja, bei uns in der Schule hat niemand den Pfad geändert, daher ging das.. :-)

Grüße, Alex..


Delete - Do 24.04.03 21:25

Kein durchdachtes Argument ... :wink: ... du solltest ja davon ausgehen, dass jemand sein Programm veröffentlichen will. Was soll der tun?
Bedienungsanleitung hat folgendes geschrieben:
Ach übrigens, ich habe GetDir zur Ermittlung des Exe-Pfades benutzt. Sie dürfen also auf keinen Fall den Pfad ändern, solange Sie mein Programm benutzen.

:?

Nee, dann doch lieber den richtigen Weg über paramstr(0).

Grüße.


Terra23 - Fr 25.04.03 00:25

Normalerweise mache ich das so. Von wegen: Was ist, wenn jemand die INI löscht, was ist, wenn der Key nicht existiert...

In der Schule ging das aber so, da pfuschte niemand rum. Die haben immer Sub7even laufen gehabt..

Grüße..


Delete - Fr 25.04.03 01:27

Dann habt ihr wohl noch nie mit TOpenDialog und TSaveDialog gearbeitet, denn spätestens, wenn man da ein anderes Verzeichnis wählt, dann iust auch das aktuelle Verzeichnis für die Anwendung geändert.

Und die Begründung: "Weil wir es immer so gemacht haben.", ist nicht gerade die beste. :wink:


Terra23 - Fr 25.04.03 22:20

@Luckie: Weiß ich doch, war ja auch nicht dagestanden, daß es eine gute Begründung ist. Ich sage ja nur, in der Schule hatten die alle nie im Sinn gehabt, den Pfad zu ändern, aber ich programmiere viel so, von wegen was ist, wenn einer das und das. Ich kann ja auch eine INI-Datei benutzen und irgend jemand kommt auf die Idee, die zu löschen, dann muß ich darauf im Tool vorbereitet sein. :-)

Grüße, Alex..