Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Fehler mit CopyFile?! (https://www.delphipraxis.net/79355-fehler-mit-copyfile.html)

Grolle 20. Okt 2006 19:22


Fehler mit CopyFile?!
 
Hallo,
folgender Code kopiert nicht alle Dateien:
Delphi-Quellcode:
          if not (copyfile(PChar(pfad +'\adressen.adt'),PChar(ExtractFilePath(ParamStr(0))+ '\daten\adressen.adt'),false)) and
             not (copyfile(PChar(pfad +'\ab.ini'),PChar(ExtractFilePath(ParamStr(0))+ '\daten\ab.ini'),false)) and
             not (copyfile(PChar(pfad +'\search.ini'),PChar(ExtractFilePath(ParamStr(0))+ '\daten\search.ini'),false)) and
             not (copyfile(PChar(pfad +'\user.ini'),PChar(ExtractFilePath(ParamStr(0))+ '\daten\user.ini'),false)) then
             begin
Wo ist denn da ein Fehler?
Viele Grüße...

mkinzler 20. Okt 2006 19:26

Re: Fehler mit CopyFile?!
 
Welche kopiert er nicht?
Hast du die einzelnen Kopiervorgänge mal unabhängig voneinander ausgeführt?

Grolle 20. Okt 2006 19:34

Re: Fehler mit CopyFile?!
 
Hi, nein einzeln probiert habe ichs noch nicht. Es wird nur die erste Datei kopiert.
//Edit: user.ini (letzter Aufruf) klappt schonmal nicht allein

Luckie 20. Okt 2006 19:42

Re: Fehler mit CopyFile?!
 
Was sagt denn MSDN-Library durchsuchenGetLastError?

Hawkeye219 20. Okt 2006 19:50

Re: Fehler mit CopyFile?!
 
Hallo Grolle,

Zitat:

Zitat von Microsoft Platform SDK
If the function succeeds, the return value is nonzero.

Lasse doch einfach mal die NOT-Operatoren weg...

Gruß Hawkeye

Grolle 20. Okt 2006 19:50

Re: Fehler mit CopyFile?!
 
Zitat:

Zitat von Luckie
Was sagt denn MSDN-Library durchsuchenGetLastError?

Wird nix angezeigt.

Sunlight7 20. Okt 2006 19:58

Re: Fehler mit CopyFile?!
 
Was heißt nix?

Muß doch mindestens 0 sein, nix geht nicht.

Was steht in der Pfad Variable?
Und ist die Option "Boolische Ausdrücke Vollständig" eingeschaltet?

Edit: Bei ExtractFilePath muß nicht '\daten' geschrieben werden, sonst sinds '\\daten'

Grolle 20. Okt 2006 21:41

Re: Fehler mit CopyFile?!
 
Hi,
habs jetzt nochmal umgeschrieben. Getlasterror sagt: Der Vorgang wurde erfolgreich beendet.
Die Dateien wurden aber nicht kopiert. Hier der relevante Code:
Delphi-Quellcode:
      if SelectDirectory('Bitte Ordner auswählen:', '' ,pfad) then
        begin
          AdsConnection1.IsConnected := false;
          if (copyfile(PChar(pfad +'\adressen.adt'),PChar(ExtractFilePath(ParamStr(0))+ 'daten\adressen.adt'),false)) and
             (copyfile(PChar(pfad +'\ab.ini'),PChar(ExtractFilePath(ParamStr(0))+ 'daten\ab.ini'),false)) and
             (copyfile(PChar(pfad +'\search.ini'),PChar(ExtractFilePath(ParamStr(0))+ 'daten\search.ini'),false)) and
             (copyfile(PChar(pfad +'\user.ini'),PChar(ExtractFilePath(ParamStr(0))+ 'daten\user.ini'),false)) then
            begin
              AdsConnection1.IsConnected := true;
              AdsTable1.Active := true;
              Statusbar1.Panels.Items[1].Text := IntToStr(ADSTable1.recordcount);
              MessageDlg('    Die Wiederherstellung der Datenbank war erfolgreich!     ',mtInformation,[mbOK],0);
            end
          else
            begin
              AdsConnection1.IsConnected := true;
              AdsTable1.Active := true;
              Statusbar1.Panels.Items[1].Text := IntToStr(ADSTable1.recordcount);
              MessageDlg('    Fehler bei der Wiederherstellung der Datenbank!     ',mtError,[mbOK],0);
            end;
        end;

Sunlight7 20. Okt 2006 21:55

Re: Fehler mit CopyFile?!
 
Nochmals:
Ist die Option "Boolische Ausdrücke Vollständig" eingeschaltet?

Kopiert er 1, 2, keine?
Kopiert er sie woanders hin?

Schon geprüft, was in der Pfad Variable steht?

Grolle 20. Okt 2006 22:00

Re: Fehler mit CopyFile?!
 
Zitat:

Zitat von Sunlight7
Nochmals:
Ist die Option "Boolische Ausdrücke Vollständig" eingeschaltet?

Wo finde ich diese Option?

Sunlight7 20. Okt 2006 22:04

Re: Fehler mit CopyFile?!
 
Projekt -> Optionen, Reiter Compiler.

Mag sein, das es bei Deiner Delphi Version anders zu finden ist, ggf. in die OH gucken.

Zitat:

Kopiert er 1, 2, keine?
Kopiert er sie woanders hin?

Schon geprüft, was in der Pfad Variable steht?
:gruebel:

Luckie 20. Okt 2006 22:28

Re: Fehler mit CopyFile?!
 
Wo hast du das GetLastError aufgerufen? Mach mal alles einzelN
Delphi-Quellcode:
if not copyfile() then
  ShowMessage(SysErrorMessage(GetLastError));
if not copyfile() then
  ShowMessage(SysErrorMessage(GetLastError));
if not copyfile() then
  ShowMessage(SysErrorMessage(GetLastError));

Grolle 20. Okt 2006 22:44

Re: Fehler mit CopyFile?!
 
Hallo,
die Variable Pfad ist korrekt. 1 wird richtig kopiert. Habe jetzt überall
GetLastError eingefügt. Beim ersten kommt komischerweise:
Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wir.
Bei allen anderen kommt:
Der Vorgang wurde erfolgreich beendet.

Sunlight7 20. Okt 2006 23:07

Re: Fehler mit CopyFile?!
 
Selbsterklärend...

Also mußt Du gucken, wo die Datei geöffnet und nicht geschlossen wird.

Grolle 20. Okt 2006 23:08

Re: Fehler mit CopyFile?!
 
Dito! Danke euch :thumb:

xaromz 20. Okt 2006 23:49

Re: Fehler mit CopyFile?!
 
Hallo,
Zitat:

Zitat von Sunlight7
Nochmals:
Ist die Option "Boolische Ausdrücke Vollständig" eingeschaltet?

Wozu soll das gut sein? Entweder es werden alle kopiert, dann passt alles, oder eben nicht. Wenn diese Option gesetzt ist, bricht er eben schon nach dem ersten Fehler ab, das ändert aber ja nichts am Ergebnis. Denn die Wiederherstellung ist nur dann vollständig, wenn sämtliche Dateien kopiert wurden. Wozu also nach einem Fehler mit der nächsten Datei fortfahren?

Gruß
xaromz

Sunlight7 20. Okt 2006 23:55

Re: Fehler mit CopyFile?!
 
Wenn das eingeschaltet ist, kann/gibt GetLastError einen falschen Wert zurück (geben), weil nur das Ergebnis des letzten CopyFile angezeigt wird.
Außer man verwendet Luckies Methode.

Jetzt alles klaro?!

Grüßle!

xaromz 21. Okt 2006 00:13

Re: Fehler mit CopyFile?!
 
Hallo,
Zitat:

Zitat von Sunlight7
Wenn das eingeschaltet ist, kann/gibt GetLastError einen falschen Wert zurück (geben), weil nur das Ergebnis des letzten CopyFile angezeigt wird.

Es klang vorhin so, als solle er das einschalten. Jetzt habe ich Dich verstanden.

Gruß
xaromz

Sunlight7 21. Okt 2006 00:27

Re: Fehler mit CopyFile?!
 
Ende gut, alles gut... :mrgreen:

Sorry, wenn's falsch rum rüber kam.

:hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 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