Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi array speichern (https://www.delphipraxis.net/69314-array-speichern.html)

draxion 13. Mai 2006 11:03


array speichern
 
Ich bin ein totaler Anfänger, da ich erst seit 2 Wochen Delphi programmiere und mich noch überhaupt nicht auskenne.
Bisher habe ich nur Flash programmiert, aber das ist mir mittlerweile zu langsahm.
In Delphi habe ich ein kleines Programm geschrieben, das Labyrinthe erstellt.
Aus Spaß möchte ich, dass man die Labyrinthe in einer txt-datei speichern kann, und später wieder laden.

Dazu hab ich einen Array of integer, und eine variable "laenge" (auch integer).
Wenn man auf den btn "speichern" klickt soll folgendes passieren:

Bsp:
meinArray sieht so aus: 1,3,2,0,0,0,2,3,1,3,2,1,1,1,3,1,0,0,2,0,1,0,3,2,3, 3,1,0
und laenge ist: 7

... dann soll die txt-Datei so aussehen:

1320002
3132111
3100201
0323310

(die Zahlen aus dem Array, und immer 7 in einer Reihe)

MFG mathis

ErazerZ 13. Mai 2006 11:39

Re: array speichern
 
Delphi-Quellcode:
var
  i, iTemp: Integer;
  sText: String;
const
  MeinArray: Array[0..34] of Byte = (1,3,2,0,0,0,2,3,1,3,2,1,1,1,3,1,0,0,2,0,1,0,3,2,3,3,1,0,1,2,3,4,5,6,7);
  InsertPos = 7;
begin
  sText := '';
  for i := 0 to sizeof(MeinArray) -1 do
  begin
    sText := sText + IntToStr(MeinArray[i]);
  end;

  if Length(sText) mod InsertPos = 0 then
  begin
    i := InsertPos;
    iTemp := 1;
    repeat
      insert(#13#10, sText, i +iTemp);
      inc(i, InsertPos);
      inc(iTemp, 2);
    until i >= Length(sText);
    sText := Trim(sText);
    // text ist geteilt ..
  end else
    ShowMessage('es ist nicht möglich gleiche reihen zu bekommen ..');

draxion 14. Mai 2006 10:06

Re: array speichern
 
Vielen Dank,
das funktioniert genau so wie ich es wollte.

... und wie kann ich den String sText jetzt in eine txt-Datei speichern ??


MFG mathis

ErazerZ 14. Mai 2006 10:17

Re: array speichern
 
machst zb ne Memo und ladest dort den Text und speicherst
Delphi-Quellcode:
  Memo1.Text := sText;
  Memo1.Lines.SaveToFile('c:\meinetxt.txt');
oder per filestream
Delphi-Quellcode:
uses Classes;

var
  f: TFileStream;
const
  s = 'Mein Text ..';
begin
  f := TFileStream.Create('c:\meinedatei.txt', fmCreate);
  f.WriteBuffer(s, Length(s));
  f.Free;

Hawkeye219 14. Mai 2006 10:39

Re: array speichern
 
@ErazerZ

Deine Stream-Lösung funktioniert so aber nur mit Stringkonstanten!
Wäre s eine (dynamische) Stringvariable, würdest du nicht den Text, sondern den Speicherbereich ab der Stringvariablen in den Stream schreiben :wink:

Eine Stringliste wäre hier wohl die besser Wahl:

Delphi-Quellcode:
var
  SL : TStringList;
const
  s = 'Mein Text ..';
begin
  SL := TStringList.Create;
  try
    SL.Text := s;
    SL.SaveToFile ('c:\meinedatei.txt');
  finally
    SL.Free;
  end;
end;
Gruß Hawkeye

ErazerZ 14. Mai 2006 10:47

Re: array speichern
 
Delphi-Quellcode:
var
  f: TFileStream;
  s: string;
begin
  s := 'heyyy';
  f := TFileStream.Create('c:\meinedatei.txt', fmCreate);
  f.WriteBuffer(Pointer(s)^, Length(s));
  f.Free;


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:35 Uhr.

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