Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Und trotzdem klappt's nicht:Löschen kopieren und umbenennen (https://www.delphipraxis.net/142294-und-trotzdem-klappts-nicht-loeschen-kopieren-und-umbenennen.html)

Fussel9 25. Okt 2009 17:09


Und trotzdem klappt's nicht:Löschen kopieren und umbenennen
 
Hi,
Hatte letzten schon mal gefragt wegen dem Kopieren Löschen und Umbenennen einer Datei, darauf habe ich folgendes erhalten:

Delphi-Quellcode:
    if CopyFile(PAnsiChar(hintergrund),PAnsiChar('.\'+ExtractFileName(hintergrund)),False) then
      begin
        DeleteFile('.\backgr.*');
        RenameFile('.\'+ExtractFileName(hintergrund),'.\'+'backgr.*');
Also ich habe in meinem Ordner eine Datei die den Namen backgr.jpg trägt nun soll das Programm diese Datei ersetzen durch eine andere aus dem OpenDlg
backgr.jpg --> x |löschen
irgendwas.*--> \/ |in den Ordner kopieren
irgendwas.*--> # |umbenennen in backgr.*

das finktioniert aber so nicht, denn die if then Abfrage wird nie erfüllt


.... Weiß wer weiter?

turboPASCAL 25. Okt 2009 17:19

Re: Und trotzdem klappt's nicht:Löschen kopieren und umbenen
 
Bevor ich mir hier einen Wolf Tippe, lies der erst einmal bitte folgendes durch:
http://www.delphi-library.de/viewtopic.php?p=499701

TurboMartin 25. Okt 2009 17:21

Re: Und trotzdem klappt's nicht:Löschen kopieren und umbenen
 
Zitat:

Zitat von Fussel9
Hi,
Hatte letzten schon mal gefragt wegen dem Kopieren Löschen und Umbenennen einer Datei, darauf habe ich folgendes erhalten:

Delphi-Quellcode:
    if CopyFile(PAnsiChar(hintergrund),PAnsiChar('.\'+ExtractFileName(hintergrund)),False) then
      begin
        DeleteFile('.\backgr.*');
        RenameFile('.\'+ExtractFileName(hintergrund),'.\'+'backgr.*');
Also ich habe in meinem Ordner eine Datei die den Namen backgr.jpg trägt nun soll das Programm diese Datei ersetzen durch eine andere aus dem OpenDlg
backgr.jpg --> x |löschen
irgendwas.*--> \/ |in den Ordner kopieren
irgendwas.*--> # |umbenennen in backgr.*

das finktioniert aber so nicht, denn die if then Abfrage wird nie erfüllt


.... Weiß wer weiter?

Sollte dein Verzeichnis das Programmverzeichnis sein, besitzt Du keine Rechte für solche Operationen

Fussel9 25. Okt 2009 17:38

Re: Und trotzdem klappt's nicht:Löschen kopieren und umbenen
 
Versteh ich nicht.
Mein Programmverzeichniss ist ein Ordner auf dem Desktop...

DeddyH 25. Okt 2009 17:43

Re: Und trotzdem klappt's nicht:Löschen kopieren und umbenen
 
Tja, wenn man alle Hinweise im anderen Thread ignoriert: keine relativen Pfade, keine Wildcards, Ausgabe einer evtl. Fehlermeldung.

turboPASCAL 25. Okt 2009 18:02

Re: Und trotzdem klappt's nicht:Löschen kopieren und umbenen
 
Zitat:

Zitat von DeddyH
Tja, wenn man alle Hinweise im anderen Thread ignoriert: keine relativen Pfade, keine Wildcards, Ausgabe einer evtl. Fehlermeldung.

Delphi-Quellcode:
function _CopyFile(FromFilePathAndFilename, ToFilePath: string): bool;
var NewPathAndFileName: string;
begin
  Result := False;

  if FileExists(FromFilePathAndFilename) then
  begin
    ToFilePath := IncludeTrailingBackslash(ToFilePath);
    if DirectoryExists(ToFilePath) then
    begin
      NewPathAndFileName := ToFilePath + ExtractFileName(FromFilePathAndFilename);

      if CopyFile(PAnsiChar(FromFilePathAndFilename), PAnsiChar(NewPathAndFileName), False) then
      begin
        Result := True;
        ShowMessage('CopyFile klappte.');
      end else
        ShowMessage('CopyFile klappt nicht');

    end else
      ShowMessage('Verzeichnis "'+ToFilePath+'" nicht gefunden.');

  end else
    ShowMessage('Datei "'+FromFilePathAndFilename+'" nicht gefunden.');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  _CopyFile('C:\Temp\Otto.txt', 'C:\Users\User\Desktop\')
end;

DeddyH 25. Okt 2009 18:12

Re: Und trotzdem klappt's nicht:Löschen kopieren und umbenen
 
Sollte es nicht genügen, GetLastError auszuwerten?

turboPASCAL 25. Okt 2009 18:25

Re: Und trotzdem klappt's nicht:Löschen kopieren und umbenen
 
Für jmd der damit umgehen kann sicher. ;)

DeddyH 25. Okt 2009 18:29

Re: Und trotzdem klappt's nicht:Löschen kopieren und umbenen
 
Das hatte ich doch im anderen Thread bereits gepostet (deshalb bin ich ja etwas angesäuert).

turboPASCAL 25. Okt 2009 18:31

Re: Und trotzdem klappt's nicht:Löschen kopieren und umbenen
 
Zitat:

Zitat von DeddyH
Das hatte ich doch im anderen Thread bereits gepostet (deshalb bin ich ja etwas angesäuert).

Trink Milch. ;)

Wusste ich nicht, also den anderen Thread.

Fussel9 27. Okt 2009 16:23

Re: Und trotzdem klappt's nicht:Löschen kopieren und umbenen
 
HI :oops:
leider kenn ich mich in Delphi nun mal nicht sooooo gut aus wie ihr,
denn ich lerne es noch...
Zitat:

_CopyFile('C:\Temp\Otto.txt', 'C:\Users\User\Desktop\')
was solln das '_' ?

Zitat:

ToFilePath := IncludeTrailingBackslash(ToFilePath);
Is da nich schon nen '/'?


PS: Eigentlich will ich nur die über nen OpenDialog ausgewählte Datei nehmen, sie in den Ordner der Exe kopieren. Dann die datei im Ordner löschen und die kopierte datei so benennen wie die gelöschte datei.....

DeddyH 27. Okt 2009 16:26

Re: Und trotzdem klappt's nicht:Löschen kopieren und umbenen
 
Die Zeile stellt einfach nur sicher, dass der Verzeichnisname mit einem Backslash endet.

Luckie 27. Okt 2009 19:56

Re: Und trotzdem klappt's nicht:Löschen kopieren und umbenen
 
So lange du uns nicht sagst, Warum das Kopieren fehl schlägt, können wir hier nur weiter rumraten. Also, was gibt MSDN-Library durchsuchenGetLastError aus?

himitsu 27. Okt 2009 20:10

Re: Und trotzdem klappt's nicht:Löschen kopieren und umbenen
 
Delphi-Quellcode:
if DirectoryExists(ExcludeTrailingBackslash(ToFilePath)) then
ich glaub diese Funktion mag keine Backslashs


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