Entwickler-Ecke

Dateizugriff - Newbie: Dateien verschieben ohne GUI


McToast - Mi 12.11.03 13:35
Titel: Newbie: Dateien verschieben ohne GUI
Hallo!

Ich hoffe meine Frage ist hier richtig, denn ich bin ein absoluter Newbie und habe als mir als Software ein altes Delphi 3 Professional zugelegt.
Nun habe ich auch ein Problem - und möchte es mit Delphi lösen...
Gar nicht so einfach für den Anfang, denn mein Programm soll im Hintergrund eine Datei auswerten und in einen anderen Ordner verschieben.

Eine Sache vollkommen ohne GUI - und (grins) genau das ist mein Problem: Delphi bietet mir schnell die Möglichkeit Programme mit Knöpfen und Fenstern etc. zu erschaffen... Und nun will ich ein Tool bauen, dass das alles nicht nutzt!

Ich habe mir zu meinem Delpi-Buch (Delphi für Kids) sowohl Delphi- wie auch Pascal-Tutorials heruntergeladen, aber meistens wird für Anfänger unter Delphi die graphische Benutzerumgebung benutzt. - Bei Schulungen zu Pascal habe ich Umsetzungsprobleme, da ich ja noch Anfänger bin - und die Struktur überhaupt erstmal durchschauen muss.

Frage: Hat jemand einen Tipp für mich ? Ich suche Tipps sowohl zur Umsetzung des Problems in Delphi3 wie auch Schulungen im Netz etc. die auf meine Problemstellung eingehen...

Zu den Tutorials hier im Forum: Ich finde es toll, dass sie hier sind (!)- aber für mich sind sie bei weitem zu wenig kommentiert! - Die Kritik ist konstruktiv gemeint - denn natürlich ist unkommentierter Code besser als keiner ;-)

Gruß an Euch!


jaenicke - Mi 12.11.03 15:14
Titel: 2 Möglichkeiten:
Hallo!

Es gibt da zwei Möglichkeiten (die ich aus Faulheit :oops: einfach aus der Delphi-Fundgrube geholt habe :wink: , [url]http://www.delphi-fundgrube.de[/url]):

Die erste:


Delphi-Quelltext
1:
2:
3:
4:
function KopiereDatei(Quelldatei, Zieldatei : string): Boolean;
begin
  Result:=CopyFile(PChar(Quelldatei), PChar(Zieldatei), true);
end;


Die zweite Möglichkeit ist etwas komplizierter:


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:
FUNCTION QuickCopy ( Quelle, Ziel : STRING ) : BOOLEAN;
VAR
  S, T: TFileStream;
BEGIN
  Result := TRUE;
  S := TFileStream.Create( Quelle, fmOpenRead );
  TRY
    TRY
      T := TFileStream.Create( Ziel, fmOpenWrite OR fmCreate );
    EXCEPT
      Screen.Cursor := crDefault;
      MessageDlg('Fehler beim Erzeugen der Zieldatei'+#13+Ziel, mtError, [mbOK], 0);
      Result := FALSE;
    END;
    TRY
      TRY
        T.CopyFrom( S, S.Size ) ;
        if Config.CopyDat then
          FileSetDate( T.Handle, FileGetDate( S.Handle ) )
        else
          FileSetDate( T.Handle, DateTimeToFileDate(Now) );
        { Dateizeit setzen }
      EXCEPT
        Screen.Cursor := crDefault;
        MessageDlg('Fehler beim Kopieren der Zieldatei'+#13+Ziel, mtError, [mbOK], 0);
        Result := FALSE
      END;
    FINALLY
      T.Free
    END;
  FINALLY
    S.Free
  END
END{QuickCopy}


Na ja, such dir eine Möglichkeit aus, bzw. probiere ob alles auch unter Delphi 3 funktioniert!

Viel Erfolg!
S.J.


Anonymous - Mi 12.11.03 16:12

1. Erstelle eine neue Anwendung
2. Klicke im Menü "Projekt" auf "Quelltext anzeigen"
3. Änderer den Code in


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
program Project1;

uses
  Windows;

begin
 if paramcount < 2 then exit;
 CopyFile(pchar(paramstr(1)), pchar(paramstr(2)), false {bzw true wenn die Datei überschrieben werden soll});
end.


McToast - Mi 12.11.03 19:48

:D Hallo ! Vielen Dank erstmal für die Antworten! Klasse! Ich werde jetzt erstmal testen... und mich dann vielleicht noch mal melden!

Toll,

--
Der kleine Toaster! :roll: