AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

datei mit TFileStream auslesen

Ein Thema von phXql · begonnen am 21. Mai 2004 · letzter Beitrag vom 21. Mai 2004
Antwort Antwort
Benutzerbild von phXql
phXql

Registriert seit: 11. Mär 2004
Ort: Mühldorf
824 Beiträge
 
#1

datei mit TFileStream auslesen

  Alt 21. Mai 2004, 16:39
Moin leute, ich möchte eine textdatei mit einem TFileStream-Objekt auslesen. ich hab bisher folgenden code:

Delphi-Quellcode:
procedure LoadFile(Filename : String; window : TFormChild);
var stream : TFileStream;
    t_read : Array of Byte;
    a : Integer;
    t_str : String;
begin
  stream := TFileStream.Create(Filename,fmOpenRead);
  SetLength(t_read,stream.size);
  t_str := '';
  for a := 0 to Length(t_read) - 1 do
  begin
    stream.Read(t_read[a],1);
    t_str := t_str + chr(t_read[a]);
  end;
  FreeAndNil(stream);
  window.mmoMain.Text := t_str;
end;
möchte ich damit eine 1 MB datei öffnen, dauert es schoin etwas. ich glaube auch nicht, dass das oben die optimale methode ist. hat jemand ein tutorial oder ein kleines beispiel, wie es besser geht?

mfg
phXql
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: datei mit TFileStream auslesen

  Alt 21. Mai 2004, 16:43
Die simpelste Anpassung in Deinem Beispiel wäre:

Code:
procedure LoadFile(Filename : String; window : TFormChild);
var stream : TFileStream;
    t_read : Array of [color=#f50000]Char[/color];
    a : Integer;
    t_str : String;
begin
  stream := TFileStream.Create(Filename,fmOpenRead);
  SetLength(t_read,stream.size);
  [color=#ff0024]stream.read(t_read[0], stream.size);[/color]
  FreeAndNil(stream);
  window.mmoMain.Text := String(PChar(@t_read[0]));
end;
oder

Delphi-Quellcode:
procedure LoadFile(Filename : String; window : TFormChild);
begin
  window.mmoMain.LoadFromFile(Filename);
end;
Größere Dateien sollte man jedoch eher Blockweise einlesen.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: datei mit TFileStream auslesen

  Alt 21. Mai 2004, 16:45
Setz deine String Variable t_str auch mal vorher auf die benötigte länge. So hast du einen Speicherkiller gebaut und das rumkopieren im Speicher dauert auch seine Zeit.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von phXql
phXql

Registriert seit: 11. Mär 2004
Ort: Mühldorf
824 Beiträge
 
#4

Re: datei mit TFileStream auslesen

  Alt 21. Mai 2004, 16:45
jo blockweise wäre mir lieber, dann kann ich den fortschritt des lade-vorgangs anzeigen. ich hab das mit dem blockweise auslesen schon versucht, bin aber dran gescheitert
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: datei mit TFileStream auslesen

  Alt 21. Mai 2004, 16:49
Das eigentliche Problem wird der letzte Schritt. Das Auslesen mag recht schnell gehen, aber wenn Du einen Fortschritt anzeigen willst wirst Du beim Zuweisen des Textes scheitern, da das Setzen des Textes im Memo recht lange dauert, wenn dieser groß wird. Also bleibe lieber bei LoadFromFile und das geht am schnellsten

Was hat der User vom Fortschrittsbalken, wenn es dadurch dreimal so lange dauert

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von phXql
phXql

Registriert seit: 11. Mär 2004
Ort: Mühldorf
824 Beiträge
 
#6

Re: datei mit TFileStream auslesen

  Alt 21. Mai 2004, 16:52
na ja, stimmt auch wieder .. dann werd ichs beim LoadFromFile belassen... danke
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 21:40 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