![]() |
Re: XCOPY mit Delphi nachbauen
Natürlich ist das nicht fest. Ich lasse das aus ComboBoxen auswählen :
Delphi-Quellcode:
In der Ziel-Combo steht der Laufwerksbuchstabe und der freie Platz auf der Platte. Das reicht.
ShellExecute (0,'open','Demoinst.bat',
PChar (cboQuellLW.Text+' '+cboZielLW.Text),'',SW_NORMAL); Allerdings will ich eine Protokolldatei haben, um anzuzeigen, was jetzt genau kopiert wurde und wohin. Ich bräuchte also die Aúsgabe von dem Shellexecute. Das kopieren dauert mind. 30 Sek. Das ist massig Zeit für einen DAU das Ausgabefenster einfach so zu schließen. 8) Mit SW_HIDE wäre das zu umgehen, aber dann besteht die Gefahr, daß wegen anscheinendem "Rechner hängt" ein DAU sogar den Rechner abschaltet, weil er nichts sieht. 8) |
Re: XCOPY mit Delphi nachbauen
Zitat:
Dann wirst Du wohl doch etwas Delphi programmieren müssen. ;-) Die Funktionen zum Kopieren in Delphi wurden ja weiter oben schon angesprochen... |
Re: XCOPY mit Delphi nachbauen
Du meinst mit Blockread usw. ? :gruebel: Der Rest sind ja auch nur WinApi Sachen.
|
Re: XCOPY mit Delphi nachbauen
Zitat:
Hast Du Angst vor der Win32 API ?
Delphi-Quellcode:
uses ShellAPI;
function MyCopy(Quelle, Ziel: string):Boolean; var fos: TSHFileOpStruct; begin ZeroMemory(@fos, SizeOf(fos)); with fos do begin wFunc := FO_COPY; fFlags := FOF_FILESONLY // nur Dateien wenn Wildcard (*.*) verwendet werden or FOF_NOCONFIRMATION; // Keine Abfrage, es wird JA angenommen (z.B. überschreiben) pFrom := PChar(Quelle + #0); pTo := PChar(Ziel) end; Result := (0 = ShFileOperation(fos)); end; procedure TForm1.Button1Click(Sender: TObject); begin // if myCopy('C:\TEMP\*.*', 'C:\Verzeichnis) then caption := 'OK' else Caption := 'ERR'; // oder für jede Datei einzeln... if myCopy('C:\TEMP\EinzelneDatei.ext', 'C:\Verzeichnis') then caption := 'OK' else Caption := 'ERR'; end; |
Re: XCOPY mit Delphi nachbauen
Angst ? Ne. Aber Mabuse, Dein Source ist mir zu WinApi lastig. :mrgreen: Außerdem hat mein Programm einen Denkfehler. Warum soll ich das Quelllaufwerk abfragen, wenn das Setup-Programm von einer CD gestartet wird ? :zwinker: Wie komme ich nun an dieses dran, also das aktuelle ?
Delphi-Quellcode:
So gehts nicht. Der zeigt mir dann "A" an. Habe gedacht 0 wäre immer das aktuelle. 8)
procedure TForm1.ErmittleAlleLW;
var l: byte; begin l := GetLogicalDriveStrings(SizeOf(LWs), LWs); QuellLW := LWs [0]; |
Re: XCOPY mit Delphi nachbauen
Äh, du weißt aber dass du mit ParamsStr(0) Verzeichnis und Anwendungsnamen bekommst?
|
Re: XCOPY mit Delphi nachbauen
moin hansa,
den programmpfad bekommst du doch über ParamStr(0); *schnipp, Lösung wieder entfernt :P* |
Re: XCOPY mit Delphi nachbauen
Zitat:
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:
Zitat:
An den Laufwerksbuchstaben kommst Du auch relativ leicht:
Delphi-Quellcode:
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.
function ExtractFileDrive(const FileName: string): string;
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.´
Delphi-Quellcode:
z.B.: Quelle ist das Quellverzeichnis der Daten:
function ExtractFilePath(const FileName: string): string;
Delphi-Quellcode:
Es kann dann z.B. so ein Pfad entstehen: 'E:\Install\..\Daten\' der aber funktioniert. (Ist das gleiche wie 'E:\Daten')
Quelle := ExtractFilePath(Application.ExeName)+'..\Daten\';
Ich hoffe diese Infos helfen Dir. |
Re: XCOPY mit Delphi nachbauen
Zitat:
Es steht ja alles schon in der DP und es gibt ja die Such Funktion... Aber jetzt wo ich das alles schon mal getippt habe, lasse ich es drin. |
Re: XCOPY mit Delphi nachbauen
Ja, Paramstr (0) enthält ja auch den Laufwerksbuchstaben. 8) Wie bin ich nur darauf gekommen, da wäre nur der Pfad drin ? :gruebel:
Delphi-Quellcode:
Das wäre die Mabuse-Version. Der müßte dann eben nachlesen, wo was hin muß. :mrgreen:
QuellLW := ExtractFileDrive(ParamStr (0));
if QuellLW = '' then begin showmessage ('Kein CD-Laufwerk bzw. kein Laufwerksbuchstabe gefunden !'#10#13#10#13+ 'Sollten Sie die CD mit einem gemappten Laufwerk benutzen, oder'#10#13+ 'wollen Sie von Festplatte installieren, so lesen Sie sich bitte die Datei'#10#13+ 'INSTALL.TXT auf der CD durch.'); Close; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz