AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XCOPY mit Delphi nachbauen

Ein Thema von Hansa · begonnen am 30. Jul 2005 · letzter Beitrag vom 3. Aug 2005
Antwort Antwort
Seite 3 von 4     123 4      
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#21

Re: XCOPY mit Delphi nachbauen

  Alt 2. Aug 2005, 10:45
Natürlich ist das nicht fest. Ich lasse das aus ComboBoxen auswählen :

Delphi-Quellcode:
  ShellExecute (0,'open','Demoinst.bat',
                PChar (cboQuellLW.Text+' '+cboZielLW.Text),'',SW_NORMAL);
In der Ziel-Combo steht der Laufwerksbuchstabe und der freie Platz auf der Platte. Das reicht.

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)
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#22

Re: XCOPY mit Delphi nachbauen

  Alt 2. Aug 2005, 10:50
Zitat von Hansa:
...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)
Wenn Du die Kontrolle über die Kopieraktion behalten willst, darfst Du sie nicht mit ShellExecute aus der Hand geben.
Dann wirst Du wohl doch etwas Delphi programmieren müssen.
Die Funktionen zum Kopieren in Delphi wurden ja weiter oben schon angesprochen...
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#23

Re: XCOPY mit Delphi nachbauen

  Alt 2. Aug 2005, 11:01
Du meinst mit Blockread usw. ? Der Rest sind ja auch nur WinApi Sachen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#24

Re: XCOPY mit Delphi nachbauen

  Alt 2. Aug 2005, 11:06
Zitat von Hansa:
Du meinst mit Blockread usw. ? Der Rest sind ja auch nur WinApi Sachen.
Wo ist das Problem?

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 := 'OKelse Caption := 'ERR';
end;
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#25

Re: XCOPY mit Delphi nachbauen

  Alt 3. Aug 2005, 00:40
Angst ? Ne. Aber Mabuse, Dein Source ist mir zu WinApi lastig. Außerdem hat mein Programm einen Denkfehler. 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 ?

Delphi-Quellcode:
procedure TForm1.ErmittleAlleLW;
var
  l: byte;
begin
  l := GetLogicalDriveStrings(SizeOf(LWs), LWs);
  QuellLW := LWs [0];
So gehts nicht. Der zeigt mir dann "A" an. Habe gedacht 0 wäre immer das aktuelle. 8)
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: XCOPY mit Delphi nachbauen

  Alt 3. Aug 2005, 01:00
Äh, du weißt aber dass du mit ParamsStr(0) Verzeichnis und Anwendungsnamen bekommst?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
bigg
(Gast)

n/a Beiträge
 
#27

Re: XCOPY mit Delphi nachbauen

  Alt 3. Aug 2005, 01:06
moin hansa,

den programmpfad bekommst du doch über ParamStr(0);


*schnipp, Lösung wieder entfernt *
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#28

Re: XCOPY mit Delphi nachbauen

  Alt 3. Aug 2005, 06:38
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.
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#29

Re: XCOPY mit Delphi nachbauen

  Alt 3. Aug 2005, 06:45
Zitat von bigg:
*schnipp, Lösung wieder entfernt *
Eigentlich hast Du Recht
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.
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#30

Re: XCOPY mit Delphi nachbauen

  Alt 3. Aug 2005, 10:42
Ja, Paramstr (0) enthält ja auch den Laufwerksbuchstaben. 8) Wie bin ich nur darauf gekommen, da wäre nur der Pfad drin ?

Delphi-Quellcode:
  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;
Das wäre die Mabuse-Version. Der müßte dann eben nachlesen, wo was hin muß.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 00:08 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