AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Kopieren der Dateien die sich verändert haben
Thema durchsuchen
Ansicht
Themen-Optionen

Kopieren der Dateien die sich verändert haben

Ein Thema von eassy · begonnen am 2. Okt 2003 · letzter Beitrag vom 10. Okt 2003
Antwort Antwort
Seite 1 von 2  1 2      
eassy

Registriert seit: 7. Mai 2003
48 Beiträge
 
Delphi 5 Enterprise
 
#1

Kopieren der Dateien die sich verändert haben

  Alt 2. Okt 2003, 13:53
hallo zusammen,

ich habe da folgendes problem:
in einem verzeichnis befinden sich verschiedene textdateien.
in meinem delphi programm wird eine datei ausgewählt und ausgelesen und
anschliessend kann der bediener den inhalt dieser datei ändern.
nun möchte ich nachdem der bediener die datei geändert hat,
nur diese datei aus dem verzeichnis in ein anderes verzeichnis kopieren.
da ja sich nur diese geändert hat. die anderen datei sollen nicht aus dem verzeichnis
kopiert werden.
1. gibt es in delphi einen befehl wie z.b. unter dos (xcopy /m) der nur die
veränderten dateien kopiert

mit der SHFileOperation wollte ich dies machen, aber irgendwie funktioniert das nicht
so ganz. da er jedesmal fragt, soll die datei überschrieben werden oder nicht...
ausserdem schaffe ich folgendes auch nicht. ich möchte die (z.b.)test.txt-datei,
in das neue verzeichnis mit dem name test021003.txt kopieren, kann mir da vielleicht
jemand helfen.
ich bin schon ganz verzeifelt....




im vorraus schon mal danke

gruß
eassy
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Kopieren der Dateien die sich verändert haben

  Alt 2. Okt 2003, 14:06
Moin eassy,

hast Du es bei SHFileOperation auch mit

Zitat von PSDK - SHFILEOPSTRUCT Structure:
FOF_NOCONFIRMATION
Respond with "Yes to All" for any dialog box that is displayed.
probiert?

Ansonsten kannst Du ja einfach die Attribute der Datei prüfen.
Ist Archiv gesetzt wurde die Datei verändert, sonst nicht.
Und wenn das Zielverzeichnis nicht existiert schlägt CopyFile fehl.
Das kann aber vorher mit ForceDirectories (unit Filectrl in D5) angelegt werden.

Du könntest auch das Verzeichnis auf Änderungen hin überwachen (Hier im Forum suchenFindFirstChangeNotification oder Hier im Forum suchenReadDirectoryChangesW).
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
eassy

Registriert seit: 7. Mai 2003
48 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Kopieren der Dateien die sich verändert haben

  Alt 2. Okt 2003, 14:22
hi chris,

nein, das habe ich noch nicht probiert.

wenn ich die attribute der dateien überprüfen möchte, könntest du mir sagen wie
das in delphi gemacht wird.

warum wird eigentlich bei folgendem code ein verzeichnis und keine datei (test02102003.txt) angelegt:
sondern im verzeichnis ist dann test.txt...
Delphi-Quellcode:

ShellFileOperation('c:test.txt','c:\server\test' + formatdatetime('ddmmyyyy',now)+ '.txt', FO_COPY);


procedure TfrmGUIForm.ShellFileOperation(fromFile, toFile: String;
  Flags: Integer);
var
  shellinfo: TSHFileOpStructA;
begin
  with shellinfo do
  begin
    wnd := Application.Handle;
    wFunc := Flags;
    pFrom := PChar(fromFile);
    pTo := Pchar(toFile);
  end;
  SHFileOperation(shellinfo);
end;

gruß
eassy
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Kopieren der Dateien die sich verändert haben

  Alt 2. Okt 2003, 14:31
Moin eassy,

weil bei FO_COPY der pTo Parameter das Zielverzeichnis angibt in das pFrom kopiert werden soll.
Willst Du es anders haben könntest Du die Datei erst kopieren und dann umbenennen.

Um die Attribute auszulesen kannst Du Hier im Forum suchenGetFileAttributes bzw. Hier im Forum suchenGetFileAttributesEx verwenden.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
eassy

Registriert seit: 7. Mai 2003
48 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: Kopieren der Dateien die sich verändert haben

  Alt 9. Okt 2003, 09:48
guten morgen,

gibt es eigentlich keine andere möglichkeit, schon während dem kopieren
den zieldateinamen zu ändern?
ich hänge da total fest.

ich bin um jede hilfe dankbar...

gruß
eassy
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#6

Re: Kopieren der Dateien die sich verändert haben

  Alt 9. Okt 2003, 10:05
Moin...

Klar gibts die... Diese Funktion stammt aus einem Buch. Du gibst unter 'von' und 'nach' den absoluten Pfad mit Dateinamen an. Umbenennen also möglich, denke ich. Relativer Pfad sollte auch möglich sein, allerdings würde ich dann sicherstellen, dass dein Arbeitsverzeichnis auch stimmt...

Delphi-Quellcode:
// Einfache Kopierfunktion
function CopyFile(von, nach: string):Boolean;
var source, drain: TFileStream;
begin
  Result:=false;

  source:=TFileStream.Create(von, fmOpenRead);
  try
    drain:=TFileStream.Create(nach, fmOpenWrite or fmCreate);
  except
    source.Free;
    Exit;
  end;
  try
    drain.CopyFrom(source, source.Size);
  except
    drain.Free;
    source.Free;
    Exit;
  end;
  drain.Free;
  source.Free;
  result:=true;
end;
Vielleicht hilft dir das weiter.

Bis denne...
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Tom

Registriert seit: 8. Jan 2003
318 Beiträge
 
RAD-Studio 2009 Pro
 
#7

Re: Kopieren der Dateien die sich verändert haben

  Alt 9. Okt 2003, 10:37
Sinniger wäre es IMHO die Standardfunktion CopyFile zu nutzen.
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#8

Re: Kopieren der Dateien die sich verändert haben

  Alt 9. Okt 2003, 11:00
Moin...

In meiner Hilfe steht zu CopyFile nix drin, und in meiner Literaur (ein 1k-Seiten Wälzer), aus der ich diese Funktion habe, steht: "gibts nicht, sowas..."

Zitat von Dickes Buch von Delphi 7:
Leider haben die Borland-Entwickler Delphi keine Routine zum Kopieren von Dateien "spendiert".
Die im Folgenden vorgestellten drei Funktionen erfüllen diese Aufgabe jeweils auf eine Andere Weise.
Woher du hast, du weisst? - will auch...
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Tom

Registriert seit: 8. Jan 2003
318 Beiträge
 
RAD-Studio 2009 Pro
 
#9

Re: Kopieren der Dateien die sich verändert haben

  Alt 9. Okt 2003, 11:04
Du solltest Dir die Win32 Programmers Reference (etc.) installieren
Zitat:
The CopyFile function copies an existing file to a new file.

BOOL CopyFile(

LPCTSTR lpExistingFileName, // pointer to name of an existing file
LPCTSTR lpNewFileName, // pointer to filename to copy to
BOOL bFailIfExists // flag for operation if file exists
);


Parameters

lpExistingFileName

Points to a null-terminated string that specifies the name of an existing file.

lpNewFileName

Points to a null-terminated string that specifies the name of the new file.

bFailIfExists

Specifies how this operation is to proceed if a file of the same name as that specified by lpNewFileName already exists. If this parameter is TRUE and the new file already exists, the function fails. If this parameter is FALSE and the new file already exists, the function overwrites the existing file and succeeds.



Return Values

If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks

Security attributes for the existing file are not copied to the new file.
File attributes (FILE_ATTRIBUTE_*) for the existing file are copied to the new file. For example, if an existing file has the FILE_ATTRIBUTE_READONLY file attribute, a copy created through a call to CopyFile will also have the FILE_ATTRIBUTE_READONLY file attribute. For further information on file attributes, see CreateFile.
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#10

Re: Kopieren der Dateien die sich verändert haben

  Alt 9. Okt 2003, 12:20
Mohoin...

Wuhaaaa... Ja, das sieht mir auch schon schwer nach C-Syntax aus...

Okay, hast recht... Aber bis dahin finde ich meine Lösung doch besser - weil einfach faul...

Bis denne...
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:38 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