AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) CopyFile Datei wird nicht überschrieben

CopyFile Datei wird nicht überschrieben

Ein Thema von Dennis07 · begonnen am 11. Okt 2015 · letzter Beitrag vom 22. Okt 2015
Antwort Antwort
Seite 2 von 4     12 34   
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
463 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: CopyFile Datei wird nicht überschrieben

  Alt 11. Okt 2015, 21:56
Wenn Copyfile nicht erfolgreich ist, muss ShowMessage aufgerufen werden
Eben nicht. Das ist ja mein Problem: Es wird nichts überschrieben, obwohl kein Fehler ausgelöst wurde und auch obwohl Copyfile True zurückgibt (also folglich ShowMessage nicht ausgeführt wird).

Außerden wird FailIfExists nicht initialisiert. Das sollte auch gemacht werden.
Nö, wieso? Ist doch egal was drinsteht, solange sichergestellt wurde, dass die Datei nicht existiert...
Dennis

Geändert von Dennis07 (11. Okt 2015 um 21:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

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

AW: CopyFile Datei wird nicht überschrieben

  Alt 11. Okt 2015, 23:11
Räum deinen Code doch erst mal auf. Speicher den zusammengebastelten Pfad mal in einer Variablen zwischen. Dann guckst du mal, ob da auch das drin steht, was du erwartest.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.637 Beiträge
 
Delphi 5 Professional
 
#13

AW: CopyFile Datei wird nicht überschrieben

  Alt 12. Okt 2015, 02:14
Das ganze hat afaik nur eine auswirkung auf manche API-Sachen wegen der BOOL-Boolean-Inkompatibilität.
Äh, ja genau darum geht's ja hier. CopyFile will einen BOOL und eben keinen Boolean. Ich wage einfach mal zu behaupten, dass das die Ursache für das Nicht-Überschreiben ist.

Übrigens empfehle ich, die Funktion Format() zu benutzen, um Pfade zusammenzusetzen, denn solche String-Zusammensetzungs-Orgien sind überaus unübersichtlich. Weiterhin empfehle ich, davon Abstand zu nehmen, Standardpfade aus Umgebungsvariablen zu ermitteln, denn dafür gibt es passende Funktionen (SHGetSpecialFolderPath und wie sie alle heißen); das schließt auch das bei dir hartcodierte Verzeichis "Documents" mit ein.

MfG Dalai
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
463 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: CopyFile Datei wird nicht überschrieben

  Alt 12. Okt 2015, 03:18
Oh, danke, wusst ich gar nicht, das mit dem SHFolderDingsta... werd ich mir mal ansehen, danke.
Dennis
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#15

AW: CopyFile Datei wird nicht überschrieben

  Alt 12. Okt 2015, 12:04
Delphi-Quellcode:
var
  Index: Integer;
  NewFolder: String;
  FailIfExists: Boolean;
begin
  NewFolder := GetEnvironmentVariable('USERPROFILE') + '\Documents\';
  for Index := 0 to ListBox1.Items.Count - 1 do
  begin
    if ListBox1.Selected[Index] = True then
    begin
      if FileExists(NewFolder + ChangeFileExt(ListBox1.Items.Strings[Index],'.txt')) = True then
      begin
        FailIfExists := (MessageDlg('Die Datei "' + ListBox1.Items.Strings[Index] + '" existiert bereits.' + sLineBreak + 'Soll diese überschieben werden?',mtWarning,mbYesNo,0) <> mrYes);
      end;
      CopyFile(PChar(CurrentFolder + '\' + ChangeFileExt(ListBox1.Items.Strings[Index],'.txt')),PChar(NewFolder + ChangeFileExt(ListBox1.Items.Strings[Index],'.txt')),FailIfExists);
    end;
  end;
was passiert den in dem vollkommen unwahrscheinlichen Fall, daß es NewFolder + ChangeFileExt(ListBox1.Items.Strings[Index],'.txt' nicht gibt?

Richtig,  CopyFile arbeitet mit einem zufälligen Wert der in FailIfExists steht.

(woher kommt eigentlich diese unsägliche Unsitte "if irgendwas = True" ? gibt es irgendeinen Java oder BASCIC -Dialekt der das so benötigt?)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (12. Okt 2015 um 12:08 Uhr)
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
463 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: CopyFile Datei wird nicht überschrieben

  Alt 12. Okt 2015, 17:03
was passiert den in dem vollkommen unwahrscheinlichen Fall, daß es NewFolder + ChangeFileExt(ListBox1.Items.Strings[Index],'.txt' nicht gibt?
Kannst du nicht wissen, kann aber nicht passieren. Das hat was damit zu tun, wie ich an die Einträge der Listbox komme. Ich hab hier ja nicht mein gesammtes Programm gepostet..

woher kommt eigentlich diese unsägliche Unsitte "if irgendwas = True" ? gibt es irgendeinen Java oder BASCIC -Dialekt der das so benötigt?
Nicht wirklich, nein. Ist noch ne dumme angewohnheit, die ich aus Assembly übernommen hatte. Mal sehen, vielleicht gewöhn ich mir das wieder ab...
Dennis
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.156 Beiträge
 
Delphi 10.4 Sydney
 
#17

AW: CopyFile Datei wird nicht überschrieben

  Alt 13. Okt 2015, 04:14
Hallo,
wie ist der Rückgabewert von CopyFile und GetLastError?

Hier noch mal die Beschreibung:

https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx


Heiko
Heiko
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
463 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: CopyFile Datei wird nicht überschrieben

  Alt 13. Okt 2015, 17:38
Hatte ich bereits oben mehrfach gepostet. Egal, ich lösche die Datei jetzt einfach, falls dieses erwünscht ist und dann wird sie komplett neu erstellt beim Kopieren, oder halt nicht. Das klappt problemlos.
Danke trotzdem für eure Hilfe!

MfG
Dennis
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.156 Beiträge
 
Delphi 10.4 Sydney
 
#19

AW: CopyFile Datei wird nicht überschrieben

  Alt 14. Okt 2015, 05:26
Hallo,
es ist trotzdem schade, dass du keine der Hilfen annimmst,
wie z.B. mal lokale Variablen zu benutzen.
FailIfExists ist nicht initialisiert, wenn die Datei nicht existiert.

Mach das ganze doch auch für Dich und uns übersichtlicher und stell den Code noch mal hier rein.

Mit SearchEverything kannst du sehr schnell nach einer Datei suchen,
wer weiß, wo die ist . . .

Heiko
Heiko

Geändert von hoika (14. Okt 2015 um 05:33 Uhr)
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
463 Beiträge
 
Delphi 11 Alexandria
 
#20

AW: CopyFile Datei wird nicht überschrieben

  Alt 14. Okt 2015, 08:34
Denkst du, das habe ich nicht?
Ich war schon bevor ich hier gepostet habe so weit, dass ich wusste, dass es an der CopyFile-Methode selbst liegen muss. Scheinbar irgendwas auf meinem System ist da Fehlerhaft. Die Variablen stimmen und es werden die Methoden und Variablen korrekt konfiguriert. Auch die Lösungswege, die ihr geostet habt (die im grunde identisch sind mit dem, was ich sonst noch so versucht habe) funktionierten nicht.
Dennis
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 19:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf