Unabhängig vom Timer, was mir auffällt, wenn ich mich jetzt nicht vertan hab:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
RichEdit1.Lines.LoadFromFile(opn.FileName);
z := 50;
x := 0; //<<da wird x initialisiert
Timer1.Enabled := true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Repeat
insert := RichEdit1.Lines.Strings[x];
memo1.Lines.Add(insert);
x := x +1;
Until x = z; //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Timer1.Enabled := false;
if x = z then
begin
SaveDialog1.Execute;
memo1.Lines.SaveToFile(SaveDialog1.FileName);
x := x + 50;
z := z + 50;
memo1.clear;
Timer1.Enabled := true;
end;
Du initialisierst x einmal, bevor du den Timmer startest. Allerdings ruft sich der Timmer anschließend ja selbst wieder auf, bzw. setzt sich zumindest auf enable, allerdings wird dabei nirgends x erneut auf Null gesetzt, woher die Abbruchbedingung auch nie eintritt, weil x weiter hoch zählt.
wenn du es unbedingt so machen willst, kannst du ja beispielsweise ein x mod 50 = 0 als Bedingung einsetzen.
Johannes M.
.