Autor Beitrag
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Fr 31.12.04 21:30 
Hallo,
ich bekomme neuderding bei meinen archiver einen schreib fehler:
die datei sieht nicht so aus wie sie aussehen soll:
der erste teil sollte acci sein(header und der zweite teile nach dem heder sollte bin sein ist er aber nicht:
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:
85:
86:
87:
88:
89:
90:
91:
92:
{
  Schreibt den Archivheader neu
  Autor         = Michael Springwald
  Erstellt am   = 17.08.2004
  Upgedatet am  = 21.11.2004
}


procedure TArchiver.WriteHeader;
var
  i:Integer;
  FN:String;
begin
  for i:=0 to AI.FileListe.count-1 do begin
    FN:=GetToken(AI.FileListe.Strings[i],';',1);
    AI.Header.Add( FN + ';' + IntToStr(GetFileSize1(FN)) + ';' + GetToken(AI.FileListe.Strings[i],';',2) + ';' + GetToken(AI.FileListe.Strings[i],';',3)+ ';');
  end;

  AI.WArchiv.WriteString(AI.Header.Text);
  AI.WArchiv.FlushBuffer;
end;
{
  Öffnet ein Archiv bzw. erstellt eins neues
  Autor         = Michael Springwald
  Erstellt am   = 17.08.2004
  Upgedatet am  = 26.12.2004
}

procedure TArchiver.OpenArchiv(ArchivName:TFileName);
var
  str:String;
begin
  TempDir:=GetExeDir + 'temp\';
  AI.Name:=ArchivName;

  if AI.Header = NIl then
    AI.Header:=TStringList.Create;

  if AI.FileListe = NIl then
    AI.FileListe:=TStringList.Create;

  if AI.A <> NIL then begin
    AI.RArchiv.Free;
    AI.WArchiv.Free;
    AI.A.Free;
  end;

  if FileExists(AI.Name) = True then begin
    AI.A:=TFileStream.Create(AI.Name,fmOpenRead);
    AI.A.Position:=0;
    AI.RArchiv:=TReader.Create(AI.A,20);
    AI.WArchiv:=TWriter.Create(AI.A,20);
    AI.WArchiv.Position:=0;
    AI.RArchiv.Position:=0;
    str:=AI.RArchiv.ReadString;

    ReadHeader;
  end
  else begin
    AI.A:=TFileStream.Create(AI.Name,fmCreate);
    AI.A.Position:=0;
    AI.RArchiv:=TReader.Create(AI.A,20);
    AI.WArchiv:=TWriter.Create(AI.A,20);
    AI.WArchiv.Position:=0;
    AI.RArchiv.Position:=0;
  end;

  AI.Header_EndPos:=AI.RArchiv.Position;
end;

{
  Packt alle Dateien die
  Autor         = Michael Springwald
  Erstellt am   = 17.08.2004
  Upgedatet am  = 21.11.2004
}


procedure TArchiver.Packe;
var
  i:integer;
  Datei:TFileStream;
begin                                       
  AI.WArchiv.Position:=0;
  AI.WArchiv.WriteString(ASignatur);

  WriteHeader;

  for i:=0 to AI.FileListe.count-1 do begin
    Datei:=TFileStream.Create(GetToken(AI.FileListe.strings[i],';', Integer(FiFileName)),fmOpenRead);
    AI.A.CopyFrom(Datei,Datei.Size);
    Datei.Free;
  end;

end;

wo kann da ein fehler auftauchen ?

_________________
MFG
Michael Springwald, "kann kein englisch...."
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Sa 01.01.05 12:23 
Zitat:

AI.RArchiv:=TReader.Create(AI.A,20);
AI.WArchiv:=TWriter.Create(AI.A,20);

würde mich mal interessieren, ob das überhaupt geht- und du ein treader und ein twriter auf einmal auf hast. Du bekommst ja schon probleme, wenn du 2 Twriter auf einmal aufhast.

Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Sa 01.01.05 12:55 
daran hats nicht gelgen, ich habe mal einfach den TReader auskometiert und immer noch das gleiche problem aber die datei war kleiner als sons wobei ich die gleichen datein verwendet hatte :?

_________________
MFG
Michael Springwald, "kann kein englisch...."
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: So 09.01.05 15:35 
(damit es wieder nach oben kommt*G*), weiß keiner eine lösung warum nach der n ten datei ein fehler auftreten kann ?

_________________
MFG
Michael Springwald, "kann kein englisch...."
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: So 09.01.05 16:16 
problem gelöst: Ich habe jetzt einfach bei der Writeheader procedure AI.WArchiv.WriteString(AI.Header.Text); ein +#0 hinzugefügt ich weiß zwar nicht warum dies sein muss, aber jetzt sieht das format wieder so aus, wie aussehen sollte *G*

_________________
MFG
Michael Springwald, "kann kein englisch...."