Zitat von
Hansa:
Angst ? Ne. Aber Mabuse, Dein Source ist mir zu
WinApi lastig.
Was heißt hier zu
WinAPI lastig?
Wenn Du ein Form1.Show; programmiert macht Du ja im Grunde auch nur einen
WinAPI Aufruf.
Deine Programme laufen unter Windows -> Windoes funktioniert nun halt mal "nur" mit
WinAPI Aufrufen!
WEnn in Deinen Programmen keine
WinAPI Aufrufe enthalten sein sollen, mußt Du unter Dos oder Linux oder MacOS programieren.
Zitat von
Hansa:
Außerdem hat mein Programm einen Denkfehler.
Für Denkfehler im Programm ist immer der Entwickler verantwortlich.
Zitat von
Hansa:
Warum soll ich das Quelllaufwerk abfragen, wenn das Setup-Programm von einer CD gestartet wird ?
Wie komme ich nun an dieses dran, also das aktuelle ?
Der Dateiname der Exe steht in
Application.ExeName oder in wie schon erwähnt
ParamStr(0).
An den Laufwerksbuchstaben kommst Du auch relativ leicht:
function ExtractFileDrive(const FileName: string): string;
Aber Vorsicht es gibt Leute (wie mich
) die auf ein CD-ROM Laufwerk auch direkt über den
UNC Namen zugreifen, in dem Fall gibt es keinen Laufwerksbuchstaben des CD-ROMs.
z.B.:
\\SERVER\CDROM\setup.exe -> ExtractFileDrive(Application.ExeName) = ''
Oder dem CD-ROM ist kein Laufwerksbuchstabe zugewiesen, aber das CD-ROM wurde in ein Verzeichnis gemountet.
z.B.
C:\CDROM\setup.exe -> ExtractFileDrive(Application.ExeName) = 'C:'
C: ist aber nicht das CD-ROM Laufwerk, sondern die Festplatte (obwohl ja auf das CD-ROM zugegriffen wurde)
Oder der Kunde hat den Inhalt der CD ganz einfach in ein Verzeichnis auf der Festplatte kopiert.
Es ist also besser mit folgender Funktion den kompletten Pfad zu ermitteln und dann mit relativen Pfadangaben zu arbeiten.´
function ExtractFilePath(const FileName: string): string;
z.B.: Quelle ist das Quellverzeichnis der Daten:
Quelle := ExtractFilePath(Application.ExeName)+'..\Daten\';
Es kann dann z.B. so ein Pfad entstehen:
'E:\Install\..\Daten\' der aber funktioniert. (Ist das gleiche wie
'E:\Daten')
Ich hoffe diese Infos helfen Dir.