AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein EReadError beim Lesen der mit TWriter geschriebenen Daten
Thema durchsuchen
Ansicht
Themen-Optionen

EReadError beim Lesen der mit TWriter geschriebenen Daten

Ein Thema von DualCoreCpu · begonnen am 4. Aug 2015 · letzter Beitrag vom 4. Aug 2015
 
DualCoreCpu
(Gast)

n/a Beiträge
 
#1

EReadError beim Lesen der mit TWriter geschriebenen Daten

  Alt 4. Aug 2015, 10:30
Hallo,

es geht immer noch um TReader/TWriter. Gestern hatte ich hier:
http://www.delphipraxis.net/186096-e...er-stream.html

Daten geschrieben, die ich nun lesen will. Dabei erhalte ich die EReadError Exception.

Das hier ist der aktuelle Quelltext dazu:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, FileServer, StdCtrls;

type
  TTestRec = record
    Feld1: String;
    Feld2: String;
    Feld3: String;
  end;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    btnOk: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Memo: TMemo;
    procedure FormDestroy(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure Edit3Change(Sender: TObject);
    procedure btnOkClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    FStream: TFileStream;
    FReader: TFileStream;
    FileReader: TReader;
    FFileWriter: TWriter;
    FTestFields: TTestRec;
  public
    { Public declarations }
    procedure CreateFileForWrite;
    procedure CreateWnd; override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnOkClick(Sender: TObject);
begin
  FFileWriter.WriteString(FTestFields.Feld1);
  FFileWriter.WriteString(FTestFields.Feld2);
  FFileWriter.WriteString(FTestFields.Feld3);
end;

procedure TForm1.CreateFileForWrite;
var
  Directory: String;
begin
  Directory := GetCurrentDir;
  if Directory[Length(Directory)]<>'\then Directory := Directory + '\';
  FStream := TFileStream.Create(Directory+'Testfile.def', fmCreate);
  FFileWriter := TWriter.Create(FStream,1024);
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
  FTestFields.Feld1 := Edit1.Text;
end;

procedure TForm1.Edit2Change(Sender: TObject);
begin
  FTestFields.Feld2 := Edit2.Text;
end;

procedure TForm1.Edit3Change(Sender: TObject);
begin
  FTestFields.Feld3 := Edit3.Text;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  FFileWriter.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  //Erzeugen des Streams zum Lesen
  FReader := TFileStream.Create('TestFile.def', fmOpenRead, fmShareDenyWrite);

  //Erzeugen des Filereader Objektes vom Typ TReader
  FileReader := TReader.Create(FReader, 1024);

  //Lesen der Daten
  FTestFields.Feld1 := FileReader.ReadString;
  FTestFields.Feld2 := FileReader.ReadString;
  FTestFields.Feld3 := FileReader.ReadString;

  FileReader.Free; //Zunächst Reader freigeben und so Datei schließen

  CreateFileForWrite; //Nun kann die Datei zum Schreiben geöffnet werden.

  //Überprüfen, ob richtig gelesen
  Memo.Lines.Add('Feld 1 ---> '+FTestFields.Feld1);
  Memo.Lines.Add('Feld 2 ---> '+FTestFields.Feld2);
  Memo.Lines.Add('Feld 3 ---> '+FTestFields.Feld3);

end;

procedure TForm1.CreateWnd;
begin
  inherited;
  //CreateFileForWrite;
  //Diese Methode wird VOR FormCreate aufgerufen. Damit wird die Datei von anderem Prozess
  //verwendet, ich erhalte eine EFOpenError Exception. Deshalb in FormCreate verlegt.
end;

end.
Meine Frage ist nun, wie kann ich das Lesen bewerkstelligen?
  Mit Zitat antworten Zitat
 


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 13:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz