AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

dynamisches array in datei speichern

Ein Thema von zitruslimmonade · begonnen am 30. Mai 2006 · letzter Beitrag vom 31. Mai 2006
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#11

Re: dynamisches array in datei speichern

  Alt 30. Mai 2006, 18:12
wenn nur dein Programm die Datei wieder lesen können muss würde ich nicht mit Trennzeichen arbeiten weil dann das Laden länger dauert (schließlich muss erst nach dem nächsten Trennzeichen gesucht werden).
Handlet es sich um normale Strings oder um begrenzte/statiche (String[größe])?
Wenn es sich um statiche handelt kann man einfach den Speicher mit einem Rutsch in die Datei kopieren. Ansonsten muss man die Stringlänge jeweils mit dazu packen bzw. ein Trennzeichen wenn man das denn will.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
zitruslimmonade

Registriert seit: 28. Apr 2006
24 Beiträge
 
#12

Re: dynamisches array in datei speichern

  Alt 30. Mai 2006, 18:18
also die string laengen sind definitif nicht abzusehen und von zeile zu zeile und eintrag zu eintrag verschieden...
das mit dem trennzeichen kann ich verstehen das es ewig dauern koennte... vor allem wenn es mehr als 1000 zeilen sind...

gibts da irgendwie ne andere moeglichkeit die daten zu speichern um sie spaeter wieder nutzbar zu machen ?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#13

Re: dynamisches array in datei speichern

  Alt 30. Mai 2006, 18:26
ja gibt es. Du schreibst vor die eigentlichen Daten jeweils die Länge der Daten:
Delphi-Quellcode:
var lLen : Word; //sollte in der Regel reichen außer die Strings sind länger als 64*** zeichen.
    lStream: TFileStream;
begin
  lStream := TFileStream.Create(YourFileName, fmCreate);
  for x := ... do
    for y := ... do
    begin
      //Lenge des Strings ermitteln
      lLen := Length(YourArray[x,y];
      //Länge in Datei schreiben (2 Byte Lang)
      lStream.Write(lLen, SizeOf(lLen));
      //Direct dahinter den String schreiben
      lStream.Write(YourArray[x,y][1], lLen);
    end;
  end;
  lStream.Free;
end;
Wenn es sich um dynamiche Array's handelt solltest du natürlich auch noch die Größe des Arrays ganz an den Anfang schreiben.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Real_Thunder

Registriert seit: 25. Apr 2006
197 Beiträge
 
#14

Re: dynamisches array in datei speichern

  Alt 30. Mai 2006, 18:27
Also das Auslesen ist ca. genau so leicht

Wenn du dich mit PHP auskennst, dann kennst du die Funktion Explode

da es diese für Delphi nicht gibt, macht man sich einfach eine.

Dies Packst du einfach unter das {R *.dfm}

Delphi-Quellcode:
type TExplode_Array= array of String;

 function Explode(const Separator, S: string; Limit: Integer = 0): TExplode_Array;
var
  SepLen: Integer;
  F, P: PChar;
  ALen, Index: Integer;
begin
  SetLength(Result, 0);
  if (S = '') or (Limit < 0) then Exit;
  if Separator = 'then
  begin
    SetLength(Result, 1);
    Result[0] := S;
    Exit;
  end;
  SepLen := Length(Separator);
  ALen := Limit;
  SetLength(Result, ALen);

  Index := 0;
  P := PChar(S);
  while P^ <> #0 do
  begin
    F := P;
    P := AnsiStrPos(P, PChar(Separator));
    if (P = nil) or ((Limit > 0) and (Index = Limit - 1)) then P := StrEnd(F);
    if Index >= ALen then
    begin
      Inc(ALen, 5);
      SetLength(Result, ALen);
    end;
    SetString(Result[Index], F, P - F);
    Inc(Index);
    if P^ <> #0 then Inc(P, SepLen);
  end;
  if Index < ALen then SetLength(Result, Index);
end;

und dann Benutz du es So:

Delphi-Quellcode:

var x_element: Array of TExplode_Array;
    x,y: Integer;
  aktueles_zeilen_array[y]: Array Of String;
// Datei Öffnen

// zeilenanzahl auslesen

for y = 0 to zeilenanzahl -1 do beginn
  x_element[y] := Explode('<tz>', zeileninhalt);
end;
Nicht getesten, und sicherlich fehler drin, aber ein Denkansatz.

MfG Real_Thunder
  Mit Zitat antworten Zitat
zitruslimmonade

Registriert seit: 28. Apr 2006
24 Beiträge
 
#15

Re: dynamisches array in datei speichern

  Alt 30. Mai 2006, 18:36
ich dank recht herzlich und werd es versuchen anzuwenden..
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#16

Re: dynamisches array in datei speichern

  Alt 31. Mai 2006, 11:44
Oder wie in diesem Post beschrieben:Array Per Sendbuf über ServerSocket senden.

Nur halt nicht an 'nen anderen PC übertragen, sondern in 'ne Datei schreiben
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
31. Mai 2006, 11:55
Dieses Thema wurde von "Christian Seehase" von "Windows API / MS.NET Framework API" nach "Object-Pascal / Delphi-Language" verschoben.
Kein Problem mit der Windows-API
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:29 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