Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Zahlen von x bis y direkt in Datei speichern (https://www.delphipraxis.net/100531-zahlen-von-x-bis-y-direkt-datei-speichern.html)

Al Ex 29. Sep 2007 19:59


Zahlen von x bis y direkt in Datei speichern
 
Hallo Leute, hab folgendes Problem:

Ich kann nur in ein Memo-Feld die Zahlen eintragen lassen und dann in eine Datei abspeichern lassen.
Für das direkte Abspeichern bin ich zu dumm :wall:
Wie lautet dazu der Code??
Außerdem dauert meine Metode ewig lange für Zahlen von 100000000 bis 999999999.

Vielen Dank im Voraus und Grüße

Alex


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

 var x :integer;
   begin
 memo1.Lines.clear;
 for x := 100000000 to 100000009 do Begin
 memo1.lines.Add(IntToStr(x));
 Memo1.Lines.SaveToFile('Datei.plr');
 End;
end;


end.

3_of_8 29. Sep 2007 20:02

Re: Zahlen von x bis y direkt in Datei speichern
 
Kein Wunder, dass das lange dauert - es sind auf 8 GB an Daten.

silver-moon-2000 29. Sep 2007 20:05

Re: Zahlen von x bis y direkt in Datei speichern
 
Zitat:

Zitat von Al Ex
Außerdem dauert meine Metode ewig lange für Zahlen von 100000000 bis 999999999.

Hallo,

das dürfte ziemlich lang dauern, da es sich um mehrere GigaByte handeln dürfte..., aber
nur so als kurze Anmerkung :zwinker: :
Es reicht, einmal ganz am Ende zu speichern. Du Speichert die Datei in jedem Zyklus der for-Schlefe, das dürfte auch ziemlich viel Zeit verbraten.

Delphi-Quellcode:
 
for x := 100000000 to 100000009 do
  memo1.lines.Add(IntToStr(x));
Memo1.Lines.SaveToFile('Datei.plr');

Dax 29. Sep 2007 20:08

Re: Zahlen von x bis y direkt in Datei speichern
 
Delphi-Quellcode:
procedure blubb(left, right: integer; file: string);
var stream: tfilestream; s: string; i: integer;
begin
  if right < left then exit;
  stream := tfilestream.create(file);
  try
    for i := left to right do
    begin
      s := inttostr(i) + #13#10;
      if length(s) > 4*1024 then
      begin
        stream.write(s[1], length(s));
        s := '';
      end;
    end;
    if length(s) > 0 then
      stream.write(s[1], length(s));
  finally  
    stream.free();
  end;
end;
Ungetestet, sollte aber (so in der Art) recht schnell funktionieren, vor allem ohne den Umweg über Memos...

dominikkv 29. Sep 2007 20:28

Re: Zahlen von x bis y direkt in Datei speichern
 
Delphi-Quellcode:
procedure Speichern(Von, Bis: Integer; FileName: String);
var
  MyFile: File of Integer;
  I: Integer;
begin
  AssignFile(MyFile, FileName);
  ReWrite(MyFile);
  try
    for i := Von to Bis do
      Write(MyFile, I);
  finally
    CloseFile(MyFile);
  end;
end;

Dax 29. Sep 2007 20:30

Re: Zahlen von x bis y direkt in Datei speichern
 
Er will (soweit ich das sehe) die Zahlen als Zeilen einer Datei, also wäre es nicht nur WriteLn, sondern sogar WriteLn(IntToStr(I)).

Hador 29. Sep 2007 21:15

Re: Zahlen von x bis y direkt in Datei speichern
 
Zitat:

Zitat von Dax
Er will (soweit ich das sehe) die Zahlen als Zeilen einer Datei, also wäre es nicht nur WriteLn, sondern sogar WriteLn(IntToStr(I)).

Annahme: Dein erstes WriteLn sollte Write heißen.

Das IntToStr() kannst du dir dann auch sparen. WriteLn kann auch direkt mit ints umgehen

DP-Maintenance 29. Sep 2007 21:19

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Die Delphi-IDE" nach "Sonstige Fragen zu Delphi" verschoben.

3_of_8 29. Sep 2007 21:52

Re: Zahlen von x bis y direkt in Datei speichern
 
Aber nicht in einem typisierten file of Integer. Dann wird der Integer in binärer Form in die Datei geschrieben und nicht - wie gewünscht - als Text. Dafür braucht man dann ein TextFile.

Im übrigen sind diese Datei-Routinen aus System doch schon seit einiger Zeit als veraltet anzusehen, wenn ich mich nicht irre, und man sollte besser auf den TFileStream zurückgreifen.

dominikkv 29. Sep 2007 21:56

Re: Zahlen von x bis y direkt in Datei speichern
 
hmmm, ich sehe nirgens dass die zahl als text gespeichert werden soll...
ich würd sagen der threadersteller sagt mal genauer was er will.

und nur weil meine methode veraltet ist (ist sie das ?!?) heißt das noch nicht dass sie schlecht ist :cyclops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz