Einzelnen Beitrag anzeigen

Nuclear-Ping
(Gast)

n/a Beiträge
 
#7

Re: eine Liste(TStringList) in einzelne Werte zerlegen

  Alt 23. Mär 2007, 13:06
Wenn deine Datei nur Zahlen (Bytes?) enthält, könntest du das aber auch effektiver binär lösen, statt mit Strings zu arbeiten (viel zu langsam). Also sprich statt 1, 4, 8, ... untereinander in eine Liste zu schreiben kannst du diese Zahlen auch in ein Array of Byte werfen und das in einem Rutsch per FileWrite in eine Datei schreiben. Auslesen kannst du den Spaß dann z.B. so:
Delphi-Quellcode:
type
  PByte = ^Byte;
var
  i, fH, fS: Integer;
  fD: Pointer;
  Data: PByte;
begin
  fH := FileOpen (...);
  if (fH = -1) then
    Fehler;
  
  // Dateigröße ermitteln
  fS := FileSeek (fH, 0, 2);
  if (fS = -1) then
    Fehler;
  FileSeek (fH, 0, 0);

  // Speicher reservieren und Datei in einem Schlag auslesen
  GetMem (fD, fS);
  if (FileRead (fH, fD^, fS) <> fS) then
    Fehler;

  // Data auf ersten Wert im Puffer zeigen lassen
  Data := fD;
  for i := 0 to fS - 1 do
    begin
      showmessage (inttostr (Data^)); // Data enthält den aktuellen Wert
      if ((i + 1) mod 16 = 0) then
        ...; // Du meintest was von 16 Zeilen = eine Zahl?
      inc (Data); // Zeiger weiterschieben, um an den nächsten Wert zu kommen
    end;
end;
  Mit Zitat antworten Zitat