Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Pfad zu einer Datei Variabel!!?? (https://www.delphipraxis.net/98455-pfad-zu-einer-datei-variabel.html)

srx 27. Aug 2007 18:08


Pfad zu einer Datei Variabel!!??
 
Hi,
mein Problem ist folgendes:

ich versuche, dass eine Datei aus einem variablen Pfad in einen bestimmten Pfad kopiert wird.

Delphi-Quellcode:
function CopyFileEx(const ASource, ADest: String;
 ARenameCheck: boolean = false): boolean;
var
  sh: TSHFileOpStruct;
begin
  sh.Wnd := Application.Handle;
  sh.wFunc := FO_COPY;

  // String muss mit #0#0 Terminiert werden, um das Listenende zu setzen
  sh.pFrom := PChar(ASource + #0);
  sh.pTo := PChar(ADest + #0);
  sh.fFlags := fof_Silent or fof_MultiDestFiles;
  if ARenameCheck then
    sh.fFlags := sh.fFlags or fof_RenameOnCollision;
  Result:=ShFileOperation(sh)=0;
end;
Das war jetzt die function, falls ihr es nochmal sehen wollt.

jetzt kommt der interessante part

Delphi-Quellcode:
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
          if CheckBox1.Checked then
          begin
              if CopyFile(PChar('...\Datei.txt'), PChar('C:\user\xxx\Desktop\Datei.neu.txt'), False) then
So dort habe ich ja jetzt einfach ...\datei geschrieben, allerdings findet er dann nichts!

könnt ihr mir da weiterhelfen ?

s-off 27. Aug 2007 18:15

Re: Pfad zu einer Datei Variabel!!??
 
Hallo,

1. der Name Deiner eigenen Funktion lautet CopyFileEx
2. was soll er auch bei ... finden? Du musst ihm schon sagen, wo die Datei liegt. Wenn DU da variabel sein willst, dann musst Du den Aufruf Deiner Funktion variabel gestalten, aber einfach ... als Quelle übergeben... das kann ja nichts werden :wink:

Um Dir jetzt aber dabei helfen zu können, wie Du den Aufruf variabel gestaltest, wären noch ein bissel mehr Infos nicht schlecht - was willst Du erreichen?

srx 27. Aug 2007 18:32

Re: Pfad zu einer Datei Variabel!!??
 
JO,

Also Ziel ist es, dass sich mein Programm eine Backup erstellt.
Da ich aber nicht weiß, wo das programm eingesetzt wird, muss es ja so programmiert sein, dass es einfach sich selbst findet und dann in einen festgelegten zb. (C:\programme\Chat\backup\) kopiert.

:coder:

ich hoffe ihr könnt meinen gedankengang nachvollziehen!

:bounce2:

Muetze1 27. Aug 2007 18:35

Re: Pfad zu einer Datei Variabel!!??
 
1. Du bekommst den Pfad wo deine EXE liegt welche gerade ausgeführt wird mit
Delphi-Quellcode:
ExtractFilePath(Application.ExeName);
heraus.
2. Ist eine Angabe von . (aktuelles Verzeichnis) und .. (übergeordnetes Verzeichnis) möglich. Mehr als zwei Punkte: Was sollte dies bedeuten? Wenn dann so: ..\..\ usw.

srx 27. Aug 2007 18:42

Re: Pfad zu einer Datei Variabel!!??
 
Zitat:

Zitat von Muetze1
1. Du bekommst den Pfad wo deine EXE liegt welche gerade ausgeführt wird mit
Delphi-Quellcode:
ExtractFilePath(Application.ExeName);
heraus.
2. Ist eine Angabe von . (aktuelles Verzeichnis) und .. (übergeordnetes Verzeichnis) möglich. Mehr als zwei Punkte: Was sollte dies bedeuten? Wenn dann so: ..\..\ usw.

Wie müsste es dann in meinem Fall aussehen, wenn der Name der Exe 'Chat' ist ?





:wiejetzt:

DeddyH 27. Aug 2007 18:46

Re: Pfad zu einer Datei Variabel!!??
 
Moment: Du möchtest ein Programm schreiben, das sich selber "backupped"?

srx 27. Aug 2007 18:54

Re: Pfad zu einer Datei Variabel!!??
 
Zitat:

Zitat von DeddyH
Moment: Du möchtest ein Programm schreiben, das sich selber "backupped"?


Ja,
da das Programm sich Backupped kann sich evtl. selbst wiedererstellen, falls es gelöscht oder beendet wird.

:thumb:

DeddyH 27. Aug 2007 18:57

Re: Pfad zu einer Datei Variabel!!??
 
Delphi-Quellcode:
if CopyFileEx(ParamStr(0),neuer_Dateiname) then...

srx 27. Aug 2007 19:05

Re: Pfad zu einer Datei Variabel!!??
 
Zitat:

Zitat von DeddyH
Delphi-Quellcode:
if CopyFileEx(ParamStr(0),neuer_Dateiname) then...

funktioniert nicht..

Delphi-Quellcode:

if CheckBox1.Checked then
          begin
              if CopyFile(ParamStr(0),Chat, PChar('B:\Backup.exe'), False) then
                    Memo1.Lines.Add('Backup create')
              else
                  RaiselastOSError;
          end
          else
          begin
              if DeleteFileToRecycleBin('B:\Backup.exe') then
              begin
                    EmptyRecycleBin;
                    Memo1.Lines.Add('Backup delete')
              end
              else
                    Memo1.Lines.Add('Backup delete :ERR')
          end;
da sagt er, dass der ParamStr (0) falsch ist ..

:duck:

s-off 27. Aug 2007 19:10

Re: Pfad zu einer Datei Variabel!!??
 
Was macht das 'Chat' dort?
Delphi-Quellcode:
opyFile(ParamStr(0),Chat, PChar('B:\Backup.exe'), False)

DeddyH 27. Aug 2007 19:20

Re: Pfad zu einer Datei Variabel!!??
 
Ich denke, Du willst die Funktion CopyFileEx verwenden :gruebel:

srx 27. Aug 2007 19:20

Re: Pfad zu einer Datei Variabel!!??
 
Zitat:

Zitat von s-off
Was macht das 'Chat' dort?
Delphi-Quellcode:
opyFile(ParamStr(0),Chat, PChar('B:\Backup.exe'), False)


Chat

so heiß die .exe die kopiert werden soll

:roteyes:

DeddyH 27. Aug 2007 19:22

Re: Pfad zu einer Datei Variabel!!??
 
Wenn die Chat.exe die Funktion aufruft, enthält ParamStr(0) den kompletten Pfad samt Dateinamen, Du musst ihn nicht extra angeben ;)

s-off 27. Aug 2007 19:23

Re: Pfad zu einer Datei Variabel!!??
 
Die hat dort aber nix zu suchen, Du bedienst Dich doch ParamStr(0).

Edit: DeddyH. war schneller.
Die roter-Kasten-Sache ist ja ätzend. Ich bin dafür, dass Beiträge ausgecheckt werden müssen, wenn man sie bearbeitet :mrgreen:

srx 27. Aug 2007 19:34

Re: Pfad zu einer Datei Variabel!!??
 
er sagt:

Inkompatible Typen 'string' und 'PAnsiChar'

und verweist auf die Stelle:
Delphi-Quellcode:
if CopyFile(ParamStr(0), PChar('B:\Backup.exe'), False) then

s-off 27. Aug 2007 19:37

Re: Pfad zu einer Datei Variabel!!??
 
Delphi-Quellcode:
if CopyFile(PChar(ParamStr(0)), PChar('B:\Backup.exe'), False) then


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:57 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 by Thomas Breitkreuz