Autor Beitrag
Wayan
Hält's aus hier
Beiträge: 3


D2005 PE
BeitragVerfasst: So 29.05.05 21:30 
Hallo ihr lieben!

Bin neu hier und hab gleich ne Frage...

Ich möchte ein Sicherungsprogramm schreiben welches bestimmte Ordner in einen anderen kopiert. Dazu wird ein Ordner im Format Laufwerk:\DDMMYYYY\ erzeugt und in diesen sollen die Verzeichnisse kopiert werden. ich hab mir dazu mehrere Beispiele angesehen und daran eine eigene Kopier-funktion gebastelt. Wird diese allerdings ausgeführt, kommt eine Fehlermeldung mit der ich nicht wirklich viel anfangen kann.

Zitat:
Zugriffsverletzung bei Adresse 77E5A918 in Modul 'kernel32.dll'. Lesen von Adresse 000D0000.

Hier meine Kopier-Funktion
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
function Kopieren(
  aWnd: HWND; aOperation: UINT; aFrom:Tstrings; aTo: String; aFlags: FILEOP_FLAGS 
  ): Integer; 
var 
  I: Integer; 
  FromPath, ToPath: string
  SHFileOpStruct: TSHFileOpStruct; 
begin 
  FromPath := ''
  for I := 0 to aFrom.Count - 1 do 
    FromPath := FromPath + aFrom.Strings[I] + #0
  FromPath := FromPath + #0

  {if Assigned(aTo) then
  begin 
    ToPath := ''; 
    for I := 0 to aTo.Count - 1 do 
      ToPath := ToPath + aTo.Strings[I] + #0; 
    ToPath := ToPath + #0; 
    if aTo.Count > 0 then 
      aFlags := aFlags or FOF_MULTIDESTFILES; 
  end; }


  with SHFileOpStruct do 
  begin 
    Wnd := aWnd; 
    wFunc := aOperation; 
    pFrom := PChar(FromPath); 
    {if Assigned(aTo) then
    begin 
      pTo := PChar(ToPath) 
    end else begin // target available 
      pTo := nil; 
    end; // target not available  }

    fFlags := aFlags; 
  end// structure 
  Result := SHFileOperation(SHFileOpStruct); 
end;

die überprüfung ob ein zielverzeichnis vorhanden ist habe ich rauskommentiert, da immer eins vorhanden ist

so sieht die Verzeichnisliste aus

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
{-----------------Liste der zu kopierenden verzeichnisse-------}
verzeichnisliste:=Tstringlist.create;
verzeichnisliste.add('C:\test\');
verzeichnisliste.add('C:\test2\');
{--------------------------------------------------------------}

und so wird die funktion aufgerufen....

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
begin
                      CreateDir (edit1.text);           {erstellt das verzeichnis aus M D und Y}
                      sicherungsverzeichnis:=edit1.text;
                      if Kopieren(self.handle,FO_COPY,verzeichnisliste,sicherungsverzeichnis,FOF_ALLOWUNDO) = 0
                        then
                          ShowMessage('Sicherung erfolgreich!')
                        else
                          Showmessage('Kopieren nicht möglich!');
                    end;


ich kann den Fehler nicht finden..... vielleich bin ich auch nur zu blöd.
Ich wünsch euch noch einen schönen Abend, und vielleich kann mir ja jemand helfen.

:cry:

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.
Moderiert von user profile iconTino: Überflüssige Zeilenumbrüche entfernt.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 29.05.05 22:44 
Du hast nicht die Prüfung auskommentiert, ob das Ziel vorhanden ist, sondern du hast das Ziel auskommentiert. Die Dateien sollen ja irgendwo hin kopiert werden. Richtig? ;) Denk mal darüber nach.
Wayan Threadstarter
Hält's aus hier
Beiträge: 3


D2005 PE
BeitragVerfasst: Mo 30.05.05 19:31 
:idea: :idea: :idea: :idea:

Danke.... Das konnte ich dann wohl sogar nachvollziehen *g*

naja, es war spät... :D

Jetzt hab ich das Ziel wieder drin.... bekomme allerdings jetzt die Fehlermeldung das vom angegebenen zielverzeichnis oder Datenträger nicht gelesen werden kann

...seufz