Entwickler-Ecke

Dateizugriff - Dateien kopieren


TimonWorld - So 10.08.03 11:53
Titel: Dateien kopieren
:D Hallo @all

Ich bin gerade dabei ein Setupprogramm zu programieren, weis jemand wie man da Dateien u. Programme kopiert????

wäre echt net :lol:


Delete - So 10.08.03 13:12

Ich persönlich würde kein Setup-Programm schreiben. Dazu gibt es genug Alternativen: bei Delphi liegt InstallShield bei, Suche in: Delphi-Forum, Delphi-Library INNOSETUP ist auch zu empfehlen, und ich habe letztens mal mit NSIS [http://www.nullsoft.com/free/nsis/] rumgespielt und recht gute Erfahrungen gemacht.

Ansonsten, beim Kopieren von Dateien kommt eine von dir wenig geliebte Aufgabe auf dich zu: Lesen! Suche in: Delphi-Forum, Delphi-Library COPYFILE, Suche in: Delphi-Forum, Delphi-Library SHFILEOPERATION.


Pascal - So 10.08.03 13:19

Im EDH stehts auch gut beschrieben wie man Dateien kopiert.


knuffel - So 10.08.03 13:23

tach! :lol:

ich glaub ich poste hier einfach mal den entsprechenden code, so wie ich es machen würde. DATEI ist der pfad der datei, die du kopieren willst, das zielverzeichnis versteht sich von selbst. das gleiche kannst du auch mit ordnern machen.


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:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, shellapi;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function CopyDir(const fromDir, toDir: string): Boolean; 
var 
  fos: TSHFileOpStruct; 
begin 
  ZeroMemory(@fos, SizeOf(fos)); 
  with fos do 
  begin 
    wFunc  := FO_COPY; 
    fFlags := FOF_FILESONLY; 
    pFrom  := PChar(fromDir + #0); 
    pTo    := PChar(toDir) 
  end; 
  Result := (0 = ShFileOperation(fos)); 
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if cCopyDir('DATEI', 'ZIELVERZEICHNIS') = True then
  ShowMessage('Datei kopiert');

end;

end.


TimonWorld - So 10.08.03 18:12

1. An MathiasSimmack: Bei Delphi 6 Personal lag kein InstallShield bei. :cry:
2. An Knuffel: Es funktioniert nich!!! :(

Das zeigt er unten dann an (in der Fehler-Leiste):

Quelltext
1:
2:
3:
4:
5:
6:
7:
[Error] Unit1.pas(33): Undeclared identifier: 'wFunc'
[Error] Unit1.pas(34): Undeclared identifier: 'fFlags'
[Error] Unit1.pas(35): Undeclared identifier: 'pFrom'
[Error] Unit1.pas(36): Undeclared identifier: 'pTo'
[Error] Unit1.pas(38): Undeclared identifier: 'ShFileOperation'
[Error] Unit1.pas(38): Undeclared identifier: 'fos'
[Error] Unit1.pas(42): Undeclared identifier: 'cCopyDir'

Und nun :?: :?:


Keldorn - So 10.08.03 20:18

binde die unit shellapi mit ein


Anonymous - So 10.08.03 20:38

Wenn du die Dateien nur kopierst, schwindet der Sinn des Setup-programmes irgendwie dahin.
Versuch mal zlib mit einzubinden und dann mit compressbuf(fer???) und decompressbuf(fer?) die Datei noch zu komprimieren / zu dekomprimieren.


Delete - So 10.08.03 20:41

Siehst du, TimonWorld, das passiert, weil du nicht in der Lage bist, richtig zu lesen sondern einfach nur Code ohne Sinn und Verstand kopierst. In knuffels Code steht´s eindeutig drin:
knuffel hat folgendes geschrieben:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, { --> } shellapi { <-- };

Und genau die gleiche Unit ist für den Erfolg mit ShellExecute zuständig. Wenn du die Beiträge aufmerksam gelesen hättest, wüsstest du das mittlerweile auch.

Ansonsten folge bitte den Links zu InnoSetup oder NSIS. Die kosten beide nichts und sind relativ einfach zu bedienen und erfüllen ihren Zweck sehr gut.


Anonymous - So 10.08.03 20:43
Titel: Re: Dateien kopieren
TimonWorld hat folgendes geschrieben:
:D Hallo @all

Ich bin gerade dabei ein Setupprogramm zu programieren, weis jemand wie man da Dateien u. Programme kopiert????

wäre echt net :lol:



scheinbar will er selbst eins programmieren. WEnn er will, lass ihn doch!


Delete - So 10.08.03 20:49

Ich bitte dich, ich habe nur meine Meinung geäußert. Ich würde mir die Arbeit nicht machen und ein Setup-Programm schreiben, wenn es genug Alternativen gibt.

Ob er meinem Rat folgt oder nicht, das ist allein seine Sache.


Anonymous - Mo 11.08.03 16:43

MathiasSimmack hat folgendes geschrieben:
Ansonsten folge bitte den Links zu InnoSetup oder NSIS. Die kosten beide nichts und sind relativ einfach zu bedienen und erfüllen ihren Zweck sehr gut.


Das hört sich aber nicht danach an.


recall - Mi 13.08.03 18:43

@MathiasSimmack:

Hmm... aha also dann gib mir mal ein Standard-Setup-Programm,
das folgende gar nicht so abwegige Funktionen hat (so eins brauchte ich, da hab ich mir selber eines geschrieben):

- Installation von DirectX überprüfen (Version).
- Freien Festplattenplatz angeben und benötigt (kennt man ja)
- Bei Bedarf sich Teile aus dem Internet ziehen, wenn die Install-Komponenten nich vollständig sind.
- Diese Install-Kompos sind übrigens gezippt ;)

Also ?
Viele Grüsse.


Delete - Do 14.08.03 09:47

Microsoft Installer bspw. Kostet auch nichts, wenn man bereit ist, sich mit den Tools von Microsoft zu befassen. :roll: (Download der Doku und Tools im PSDK -> Windows Installer SDK).


recall - Do 14.08.03 13:52

OK, wenn das alles kann, dann entschuldige ich mich doch für meine satirische Antwort...

Habs mir jetzt nicht mehr angeschaut, hab ja schon ein Setup-Prg ;) .
Das hat auch nur 1 1/2 h gedauert :) und ich habe was dazu gelernt.

Viele Grüsse.


Delete - Do 14.08.03 14:52

Satire ist was anderes. Aber ich nehm´s dir nicht übel - du lernst das auch noch.


TimonWorld - So 17.08.03 11:16

Was meint Matthias mit 'Download der Doku und Tools im PSDK -> Windows Installer SDK' ???