Autor Beitrag
bobicar
Hält's aus hier
Beiträge: 2

Win XP Prof.
Delphi 7
BeitragVerfasst: Mo 06.12.04 19:04 
hallo,
bin delphi anfänger und habe hier: www.delphi-forum.de/...ight=datei+erstellen
eine datei erstellt. Jetzt ist mein problem das ich net weiß wie ich diesen prozess mit der ProgressBar visualisiere.

_________________
Cut and Paste ersetzt kein Denken.
herzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 168

WINXP pro, SUSE Linux 9.0
D7 Pers.
BeitragVerfasst: Mo 06.12.04 19:15 
Einfach folgendes hinzufügen
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:
procedure TForm1.CreateDumpFile(FileName : String; FileSizeMB : Integer);
var
  i         : Integer;  
  DumpFile  : File;  
  MemoryBuf : PChar;  
  AmtWritten : Integer;
const
  SizeMeg = 1048576;  
begin  
  AmtWritten := 0;  
  AssignFile(DumpFile, FileName);  
  // Datei zum Schreiben vorbereiten  
  try  
    Rewrite(DumpFile, 1);
  except  
    CloseFile(DumpFile);  
    Exit;  // Funktion verlassen, falls Datei nicht erstellt werden kann  
  end;  
  GetMem(MemoryBuf, SizeMeg);  
  FillChar(MemoryBuf^, SizeOf(MemoryBuf), 0); // Buffer leeren - hier war der Fehler  
  // 1MB-Blöcke solange in die Datei schreiben, wie gefordert
  Progressbar1.Max:=FileSizeMB; //<------
  for i := 0 to FileSizeMB - 1 do
  begin
    Progressbar1.Position:=i; //<-----
    BlockWrite(DumpFile, MemoryBuf^, SizeMeg, AmtWritten);
    if AmtWritten < SizeMeg then  // Wenn Festplattenkapazität voll, nicht mehr schreiben
      break;
  end;
  FreeMem(MemoryBuf);
  CloseFile(DumpFile);
end;
bobicar Threadstarter
Hält's aus hier
Beiträge: 2

Win XP Prof.
Delphi 7
BeitragVerfasst: Mo 06.12.04 19:47 
hi,
erstmal danke für die schnelle antwort ein problem hab ich aber noch und zwar wenn ich das ganze starte und eine datei erstellen will krieg ich immer eine "access violation" fehlermeldung.
Mein code sieht wie folgt aus:

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:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, StdCtrls, ComCtrls, jpeg, ExtCtrls, Spin;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
   
    StatusBar1: TStatusBar;
    GroupBox2: TGroupBox;
    Edit2: TEdit;
    Button1: TButton;
    SpeedButton1: TSpeedButton;
    SpinEdit1: TSpinEdit;
    Image1: TImage;
    Label2: TLabel;
    ProgressBar1: TProgressBar;
    procedure Button1Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure CreateDumpFile(FileName : String; FileSizeMB : Integer);
var
  i         : Integer;
  DumpFile  : File;
  MemoryBuf : PChar;     
  AmtWritten : Integer;
  ProgressBar1 : TProgressBar;
const
  SizeMeg = 1048576;
begin
  AmtWritten := 0;
  AssignFile(DumpFile, FileName);
  // Datei zum Schreiben vorbereiten     
  try
    Rewrite(DumpFile, 1);
  except
    CloseFile(DumpFile);
    Exit;  // Funktion verlassen, falls Datei nicht erstellt werden kann
  end;     
  GetMem(MemoryBuf, SizeMeg);
  FillChar(MemoryBuf^, SizeOf(MemoryBuf), 0); // Buffer leeren - hier war der Fehler     
  // 1MB-Blöcke solange in die Datei schreiben, wie gefordert     
  Progressbar1.Max:=FileSizeMB;
  for i := 0 to FileSizeMB - 1 do
  begin
   Progressbar1.Position:=i; 
   BlockWrite(DumpFile, MemoryBuf^, SizeMeg, AmtWritten);
    if AmtWritten < SizeMeg then  // Wenn Festplattenkapazität voll, nicht mehr schreiben
      break;

  end;     
  FreeMem(MemoryBuf);
  CloseFile(DumpFile);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  CreateDumpFile(''+Edit2.Text, SpinEdit1.Value);
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  Form2.ShowModal;
end;

end.


in dem SpinEdit steht die größe der datei und im Edit2 der pfad und dateiname.
Im Form 2 hab ich einen dialog um den pfad auszuwählen.

_________________
Cut and Paste ersetzt kein Denken.
herzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 168

WINXP pro, SUSE Linux 9.0
D7 Pers.
BeitragVerfasst: Mo 06.12.04 22:09 
schreib mal anstatt

ausblenden Delphi-Quelltext
1:
procedure CreateDumpFile(FileName : String; FileSizeMB : Integer);					

ausblenden Delphi-Quelltext
1:
procedure TForm1.CreateDumpFile(FileName : String; FileSizeMB : Integer);					


und
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
    procedure Button1Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
  private
    { Private declarations }
    procedure CreateDumpFile(FileName : String; FileSizeMB : Integer);
...
herzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 168

WINXP pro, SUSE Linux 9.0
D7 Pers.
BeitragVerfasst: Do 09.12.04 21:42 
Hat das jetzt geklappt?