Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi dynamischen Array laden (https://www.delphipraxis.net/80052-dynamischen-array-laden.html)

ibp 2. Nov 2006 10:38

Re: dynamischen Array laden
 
siehe mein post oben!

Larky 2. Nov 2006 10:44

Re: dynamischen Array laden
 
count zählt doch jede Zeile oder??
WEnn ja is das doch auch falsch weil der dann ja pro anzahl der zeilen eine neue Spalte in meinem Array einfügt!!!

ibp 2. Nov 2006 10:46

Re: dynamischen Array laden
 
ja, aber du schreibst doch auch je array-feld eine zeile!

hast du dir mal deine datei angesehen?

c64ranni 2. Nov 2006 10:53

Re: dynamischen Array laden
 
Wenn dein Array so aussieht
Delphi-Quellcode:
type
  TReihe = array[0..132] of Integer;
  TGrid = array of TReihe;
Dann könntest dus am einfachsten über einen FileStream machen, dann hast du auch gleich a bisserl a "Codierung" drinnen und nicht jeder kann die Daten einfach ändern oder lesen, indem er die Datei mitn Editor aufmacht.

So gehts mitn FileStream
Delphi-Quellcode:
procedure Speichern;
var
  I,J : Integer
  FS : TFileStream;
  mInt : Integer;
  Ver : Integer;
begin
  FS := TFileStream.Create('DATEINAME',fmCreate);
  try
    Ver := 1
    FS.WriteBuffer(Ver,sizeof(Ver));
    FS.WriteBuffer(Length(Oberarray),Sizeof(Length(Oberarray)));
    for I := Low(Oberarray) to High(Oberarray) do
    begin
      for J := 0 to 132 do
      begin
       mInt := Oberarray[I][J]      
       FS.WriteBuffer(mInt,Sizeof(mInt));
       //Bei einem String musst dus anders machen
      end;
    end;
  finally
    FS.Free;
  end;
end;

procedure Laden;
var
  I,J : Integer
  FS : TFileStream;
  mInt : integer
  Ver : Integer
begin
  FS := TFileStream.Create('DATEINAME',fmread);
  try
    FS.ReadBuffer(Ver,Siezof(Ver));
    if Ver <> 1 then FEHLER!!!!!
    FS.ReadBuffer(I,Sizeof(I));
    SetLength(Oberarray,I+1);
    for I := 0 to (I-1) do
    begin
      for J := 0 to 132 do
      begin
        FS.ReadBuffer(mInt,Sizeof(mInt));
        oberarray[I][J] := mInt;
        //Bei einem String musst dus anders machen
      end;
    end;
  finally
    FS.Free;
  end;
end;
Das sollte normalerweise funktionieren.
Einzige Ausnahme, bei einem String musst mehr in den Stream speichern, sonst funktiniert das mit jedem Datentyp. und du bist flexibler bei Erweiterungen, mit Versionsnummer!

ibp 2. Nov 2006 10:53

Re: dynamischen Array laden
 
sorry hattest recht, hatte was übersehen, so sollte es gehen...

Delphi-Quellcode:
procedure TFStartseite.LadenClick(Sender: TObject);
var
  i, j, zeile: integer;
  slDaten: TStringList;

begin
  slDaten := TStringList.Create;
  slDaten.LoadFromFile('termine');

  zeile:=0;

  setlength(slDaten,slDaten.count); <---  nachtrag, arraygröße stzen!

  for i := 0 to slDaten.count-1 do  <-- hier ist die lösung!!!! 
  begin
    for j := 0 to 132 do
    begin
      Oberarray[zeile, j] :=slDaten[i];
    end;
    inc(zeile);  '<----------
  end;
  slDaten.Free;
end;
[edit] arraygröße!

Larky 2. Nov 2006 11:56

Re: dynamischen Array laden
 
YUHU es funktioniert!

Hab noch nen bissl rumgebastelt und jetzt klappts endlich!!

Danke für eure Hilfe! Echt super wie schnell man hier Antworten bekommt!


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:20 Uhr.
Seite 2 von 2     12   

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