Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   XCOPY mit Delphi nachbauen (https://www.delphipraxis.net/50745-xcopy-mit-delphi-nachbauen.html)

MaBuSE 3. Aug 2005 10:47

Re: XCOPY mit Delphi nachbauen
 
Zitat:

Zitat von Hansa
Das wäre die Mabuse-Version. Der müßte dann eben nachlesen, wo was hin muß. :mrgreen:

Nein, das ist nicht die MaBuSE Version !!!

Lies mein Post oben mal bis zum Ende.

Ich sagte das folgendes besser ist:
Delphi-Quellcode:
Quelle := ExtractFilePath(Application.ExeName)+'..\Daten\';
Ich würde es nicht so machen wie Du es mir in den Mund legst.
(Außerdem habe ich im Gegensatz zu Anderen keine Angst vor Win32 API Funktionen!)

So das musste mal gesagt werden.

[edit]
ps: Abgesehen davon würde ich in einem Pojekt keine Hardcodes verwenden, sondern z.B. den Fehlertext als ResourceString oder wenigstens als Konstante in einer "*const.pas" Unit definieren.
[/edit]

Hansa 3. Aug 2005 11:02

Re: XCOPY mit Delphi nachbauen
 
Jaja, das habe ich falsch hingeschrieben. 8) Das wäre die Version für Mabuse. In der INSTALL.TXT steht allerdings auch nur folgendes drin :

"Kopieren Sie den kompletten Ordner DEMO von der CD in ein Verzeichnis Ihrer Wahl."

Wer das nicht packt, auf den verzichte ich lieber freiwillig.

bigg 3. Aug 2005 11:38

Re: XCOPY mit Delphi nachbauen
 
So hier nochmal mal meine Variante:

Delphi-Quellcode:
function GetAppDevice: String;
var i, p: Integer; s: String;
begin
  i := 0;
  p := 0;
  s := ParamStr(0);

  if s <> '' then
  begin
    repeat
      inc(i);

      if s[i] = '\' then
      begin
        p := i;
        break;
      end;
    until s[i] = #0;
  end;

  if p = 0 then Result := '' else
  Result := Copy(s, 1, p);
end;
Zur Sicherheit könntest du am Ende DirectoryExists() aufrufen.

MaBuSE 3. Aug 2005 13:13

Re: XCOPY mit Delphi nachbauen
 
Zitat:

Zitat von bigg
So hier nochmal mal meine Variante:
...
Zur Sicherheit könntest du am Ende DirectoryExists() aufrufen.

Du hast trotzdem noch folgende Probleme:
Zitat:

Zitat von MaBuSE
...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....

Was ist wenn er dann Laufwerk C zurückgibt, aber das CD-ROM Laufwerk gar keinen eigenen Buchstaben hat und C: die Festplatte ist. ... ?

Prüfen ob der Laufwerksbuchstabe ein CD-ROM Laufwerk ist (Devicetyp) macht auch keinen Sinn, da ein Laufwerk über Netz oder einfach mit Subst gemoutet sein kann.
Code:
subst R: C:\CDROM
Das Laufwerk R: hat in dem Beispiel den Typ eines Netzwerklaufwerks.
(Obwohl es ja das in das Verzeichnis c:\CDROM gemountete lokale CD-ROM Laufwerk ist)

Das DirectoryExists sagt ja nur aus, das es das Laufwerk gibt, nicht was dahintewr steckt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 Uhr.
Seite 4 von 4   « Erste     234   

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