AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi CD-Laufwerk als Variable setzen (Newbie-Frage)
Thema durchsuchen
Ansicht
Themen-Optionen

CD-Laufwerk als Variable setzen (Newbie-Frage)

Ein Thema von OoNapiBLNoO · begonnen am 17. Mai 2007 · letzter Beitrag vom 18. Mai 2007
Antwort Antwort
OoNapiBLNoO

Registriert seit: 17. Mai 2007
Ort: Berlin
11 Beiträge
 
Delphi 7 Enterprise
 
#1

CD-Laufwerk als Variable setzen (Newbie-Frage)

  Alt 17. Mai 2007, 21:45
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
  Mit Zitat antworten Zitat
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#2

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

  Alt 17. Mai 2007, 22:43
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
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#3

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

  Alt 17. Mai 2007, 22:48
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:
DeinLaufwerk:=GetFirstCDROMDrive; ACHTUNG!!! ES WIRD DAS ERSTE LAUFWERK GESUCHT....
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
HalloDu

Registriert seit: 24. Apr 2006
Ort: Oelde
267 Beiträge
 
Delphi 2009 Professional
 
#4

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

  Alt 17. Mai 2007, 22:48
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.
Frederic H.
  Mit Zitat antworten Zitat
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#5

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

  Alt 17. Mai 2007, 22:52
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
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
HalloDu

Registriert seit: 24. Apr 2006
Ort: Oelde
267 Beiträge
 
Delphi 2009 Professional
 
#6

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

  Alt 17. Mai 2007, 22:54
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.
Frederic H.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

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

  Alt 17. Mai 2007, 23:33
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#8

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

  Alt 17. Mai 2007, 23:34
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
OoNapiBLNoO

Registriert seit: 17. Mai 2007
Ort: Berlin
11 Beiträge
 
Delphi 7 Enterprise
 
#9

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

  Alt 17. Mai 2007, 23:54
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:\?
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#10

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

  Alt 18. Mai 2007, 10:00
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:21 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