Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi CD-Laufwerk als Variable setzen (Newbie-Frage) (https://www.delphipraxis.net/92316-cd-laufwerk-als-variable-setzen-newbie-frage.html)

OoNapiBLNoO 17. Mai 2007 21:45


CD-Laufwerk als Variable setzen (Newbie-Frage)
 
Hallo

Ich habe gleich mal als Einstieg eine Frage an euch :)

Und zwar möchte ich, dass wenn ich mein Programm starte, er gleich automatisch das CD-Laufwerk sucht und findet ohne das ich erst auf ein Button klicken muss. Das gefundene CD-Laufwerk soll dann mittels Variabel innerhalb meines Programms ansprechbar sein, weil es sollen Installationen daraus gestartet werden.


vielleicht hat ja jemand eine Lösung :)

gruß napi

Dragon27 17. Mai 2007 22:43

Re: CD-Laufwerk als Variable setzen (Newbie-Frage)
 
Hallo,

also hier mal etwas was hilfreich sein könnte:

http://www.swissdelphicenter.ch/de/showcode.php?id=380


Um das ganze beim start des Programmes zu machen musst du es ins OnShow des Hauptformulars eintragen.

Gruß

Andy

Dragon27 17. Mai 2007 22:48

Re: CD-Laufwerk als Variable setzen (Newbie-Frage)
 
Diese Funktion kopieren:

Delphi-Quellcode:

function GetFirstCDROMDrive: char;
var
  drivemap, mask: DWORD;
  i: integer;
  root: string;
begin
  Result := #0;
  root := 'A:\';
  drivemap := GetLogicalDrives;
  mask := 1;
  for i := 1 to 32 do
  begin
    if (mask and drivemap) <> 0 then
      if GetDriveType(PChar(root)) = DRIVE_CDROM then
      begin
        Result := root[1];
        Break;
      end;
    mask := mask shl 1;
    Inc(root[1]);
  end;
end;
Eine Globale Variable definieren:

Delphi-Quellcode:

var
  Form1: TForm1;
  DeinLaufwerk: Char;

implementation

{$R *.dfm}

Ins onShow das hier schreiben:
Delphi-Quellcode:
DeinLaufwerk:=GetFirstCDROMDrive;
ACHTUNG!!! ES WIRD DAS ERSTE LAUFWERK GESUCHT....

HalloDu 17. Mai 2007 22:48

Re: CD-Laufwerk als Variable setzen (Newbie-Frage)
 
Hi,

OnShow ist nicht so optimal, da das sonst jedesmal gemacht wird, wenn das Fenster wieder neu angezeigt wird, was eventuell bei Anwendungen mit mehreren Fenstern zu Problemen führen kann. Ich empfehle es in das OnActivate Ereignis zu schreiben, da besteht, soweit ich weiß diese Problematik nicht.

Man schreibt sich, Frederic.

Dragon27 17. Mai 2007 22:52

Re: CD-Laufwerk als Variable setzen (Newbie-Frage)
 
Hallo,

jap hast du recht ;-)

Bin davon ausgegangen, dass es nur ein Fenster ist.... Natürlich (wenn auch umständlich) könnte man nach dem ersten Starten im OnShow ne Boolean-Variable auf True setzen und dann wird das ganze nicht mehr gemacht...

Obwohl ist eigentlich nicht schlimm wenn das CD-Romlaufwerk nochmals ermittelt wird... oder ?

;-)

Gruß

Andy

HalloDu 17. Mai 2007 22:54

Re: CD-Laufwerk als Variable setzen (Newbie-Frage)
 
Hi,

da hast du natürlich recht, aber wenn er das Programm irgendwann erweitern möchte und dann in OnShow etwas macht was nur einmal sein darf, dann würde das zu Problemen führen die man ja schon früh hätte verhindern können. Außerdem sieht er so direkt was der Unterschied zwischen OnShow und OnActivate ist ^^.

Man schreibt sich, Frederic.

Luckie 17. Mai 2007 23:33

Re: CD-Laufwerk als Variable setzen (Newbie-Frage)
 
Auch OnActivate kann öfters aufgerufen werden. Warum nicht im OnCreate der Hauptform? Desweiteren, warum eine globale Variable? Warum kein Feld der Form-Klasse. Und was, wenn die CD im zweiten CD-Laufwerk liegt oder die Installation auf die Festplatte kopiert wurde oder auf einem Netzwerkpfad liegt?

Sollte die Anwendung für die Installation im gleichen Verzeichnis liegen, bekommst du mit ParamStr den Pfad zu deiner Anwendung.

Christian Seehase 17. Mai 2007 23:34

Re: CD-Laufwerk als Variable setzen (Newbie-Frage)
 
Moin Zusammen,

solche Initialsierungen gehören IMHO in das OnCreate eines Formulares, in den Intialization-Abschnitt einer Unit oder gleich in die Projektdatei.
Der genaue Ort hängt von der Verwendung im Programm ab.

OoNapiBLNoO 17. Mai 2007 23:54

Re: CD-Laufwerk als Variable setzen (Newbie-Frage)
 
hmm, also es soll folgendermaßen sein.

Ich habe ne menge Checkboxen auf der Form1 und anhand der checkboxen soll geprüft werden, ob es installiert werden soll oder nich. Das hab ich alles schon soweit fertig. Wenn die checkboxen angewählt sind, trägt er das in der Regedit unter RunOnceEx ein, damit es beim nächsten Neustart installiert wird, soweit so gut.

Als ich solche Spielchen noch mit ner *reg Datei machte, hab ich angegeben, das er in all meinen Laufwerken eine bestimmte Datei suchen soll, die im RootVerzeichnis war (zb: winnt) und hat diese gefunden und das Laufwerk als %CDROM% deklariert und konnte bei der Verzeichnis angabe den Pfad mit der Variable angeben (%CDROM%\programm\setup.exe) und hat immer den richtigen Laufwerksbuchstaben gehabt, egal auf welchen PC.

Wo füge ich den Queeltext von Dragon27 denn genau ein? (sorry wegen der dummen Frage) und ja, sowie ich das einschätze, sucht der nach Laufwerk A:\?

Apollonius 18. Mai 2007 10:00

Re: CD-Laufwerk als Variable setzen (Newbie-Frage)
 
Es wird nach dem Laufwerk mit dem dem "kleinsten" ersten Buchstaben gesucht. Da ist nämlich noch ein inc(root[1] versteckt, das den ersten Buchstaben erhöht.
Die Funktion fügst du irgendwo in der implementation ein, der Aufruf kommt meiner Meinung nach am besten in die initialization.


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