Thema: Delphi WriteLn begrenzt?

Einzelnen Beitrag anzeigen

Benutzerbild von HaCkAttaCk2001
HaCkAttaCk2001

Registriert seit: 4. Nov 2003
Ort: Chemnitz
95 Beiträge
 
#1

WriteLn begrenzt?

  Alt 4. Mär 2006, 00:16
Hi @ all.

Ich habe ein Programm geschrieben, dem ich eine Textdatei übergeben kann (derzeit noch hardcoded, ich brauch das Prog nur intern). Das Programm bastelt jede mögliche Kombination der Wörter dieser Textdatei zusammen, und zwar in dem Format: wortzahlwort (z.B. test1test). Das ganze wird dann als Textdatei gespeichert, eine Kombination je Zeile.

Das Programm selbst funktioniert eigentlich, aber es bricht plötzlich mit dem Schreiben per WriteLn ab. Es kommt keine Fehlermeldung oder Warnung. Es hört einfach mitten im Schreiben der Textdatei auf und tut so, als ob es fertig wäre.

Der Code ist nicht sehr lang, und da man es im Zusammenhang vielleicht besser versteht, hab ich ihn mal komplett angehangen. Derzeit ist ne ProgressBar mit drin, die ist aber noch nicht eingearbeitet.

Drückt einfach einmal auf Start, wartet 2 Sekunden und schaut euch die gen.txt an. Warum bricht der Schreibvorgang einfach ab?


C ya.

PS: Ja, ich weiß, man soll nicht mit dermaßen vielen globalen Variablen arbeiten, aber es ist auch nicht für eine weltweite Vermarktung gedacht .

Edit:

Für alle, die sich nichts runterladen wollen :

Delphi-Quellcode:
var
  Form1: TForm1;
  Anzahl : Integer;
  F : Textfile;
  G : Textfile;
  Zahl : Integer;
  Zaehldurchlauf : Integer;
  Wort2 : Integer;
  ErstesWort : String;
  ZweitesWort : String;
Delphi-Quellcode:
function PasswortGen() : String;
begin
  if Zaehldurchlauf < Anzahl*Anzahl then
  begin
    Zaehldurchlauf := Zaehldurchlauf + 1;
  end
  else
  begin

    if Zahl < 9 then
      Zahl := Zahl + 1
    else
      Zahl := 0;
    Zaehldurchlauf := 1;
    Reset(G);
    Reset(F);
  end;

  if Wort2 < Anzahl then
  begin
    ReadLn(G,ZweitesWort);
    Wort2 := Wort2 + 1;
  end
  else
  begin
    Reset(G);
    ReadLn(G,ZweitesWort);
    Wort2 := 1;
    Readln(F,ErstesWort);
  end;

  result := ErstesWort + IntToStr(Zahl) + ZweitesWort;
end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Z : Textfile;
  FileName : String;
  Zieldatei : String;
  Maximum : Integer;
  Durchlauf : Integer;
  Passwort : String;
begin
  FileName := ExtractFileDir(ParamStr(1)) + 'test.txt';
  AssignFile(F,Filename);
  Reset(F);
  while not eof(F) do
  begin
    Readln(F);
    Anzahl := Anzahl + 1;
  end;
  Reset(F);
  ReadLn(F,ErstesWort);
  AssignFile(G,Filename);
  Reset(G);
  Wort2 := 0;
  Zahl := 0;
  Label2.Caption := IntToStr(Anzahl);
  Maximum := Anzahl*Anzahl*10;
  Label6.Caption := IntToStr(Maximum);
  Zieldatei := ExtractFileDir(ParamStr(1)) + 'gen.txt';
  AssignFile(Z,Zieldatei);
  ReWrite(Z);
  for Durchlauf := 1 to Maximum do
  begin
    WriteLn(Z,PasswortGen());
  end;
end;
3 Labels auf der Form platzieren und die Label2, -4 und -6 nennen und einen Button draufwerfen.

Was zum testen (in eine test.txt schreiben und ins Progverzeichnis legen ):

Zitat:
aaaa
aaab
aaac
aaad
aaae
aaaf
aaag
aaah
aaai
aaaj
aaak
aaal
aaam
aaan
aaao
aaap
aaaq
aaar
aaas
aaat
aaau
Angehängte Dateien
Dateityp: rar passgen_180.rar (1,4 KB, 1x aufgerufen)
Support bacteria! They are the only culture some people have...
  Mit Zitat antworten Zitat