Autor Beitrag
Martello
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131

WIN 2000
TP, C, Delphi 1.0, Turbo Delphi 2006, Delphi 7
BeitragVerfasst: Mi 13.05.09 21:48 
Hallo,

ich war lange bei TurboPascal geblieben, da meine Programmieraufgaben
immer nur auf "Text" basierten.

Ich habe nun ein einfaches Programm geschrieben, als Vorversuch für die eigentliche Aufgabe,
die später zeilenweise zwei Textdateien verarbeiten und Resultate in eine dritte Textdatei speichern soll.

Kann mir jemand sagen, weshalb ein E/A-Fehlermeldung nach Klick auf Button4 den Ablauf abbricht?

Danke
Martello

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
  inn1, inn2,res: text;
  zeile: string;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Opendialog1.Execute;
assignfile(inn1,opendialog1.filename);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Opendialog1.Execute;
assignfile(inn2,opendialog1.filename);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
assignfile(res,edit1.Text);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin

repeat
readln(inn1,zeile);
writeln(res,zeile);
readln(inn2,zeile);
writeln(res,zeile);

until eof(inn1);
end;

end.
Martello Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131

WIN 2000
TP, C, Delphi 1.0, Turbo Delphi 2006, Delphi 7
BeitragVerfasst: Mi 13.05.09 21:57 
Ich hatte 'reset(inn1)' vergessen...
Das wäre mir in Turbo Pascal nicht passiert :?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 13.05.09 22:41 
Du solltest als Typ Textfile benutzen, Text stammt glaube ich noch aus Turbo Pascal. ;-)

Davon abgesehen ist es normalerweise nicht gut, AssignFile und das Auslesen zu trennen. Und ich sehe kein CloseFile. Ohne das bleibt die Datei gesperrt (zumindest solange das Programm läuft).

Dann solltest du berücksichtigen, dass man im Dialog auch auf Abbrechen drücken kann.
ausblenden Delphi-Quelltext
1:
2:
 if Opendialog1.Execute then
  AssignFile(inn1, OpenDialog1.Filename);
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 14.05.09 08:09 
Rewrite bzw. Append fehlt aber auch.
Martello Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131

WIN 2000
TP, C, Delphi 1.0, Turbo Delphi 2006, Delphi 7
BeitragVerfasst: Sa 16.05.09 21:53 
user profile iconDeddyH hat folgendes geschrieben Zum zitierten Posting springen:
Rewrite bzw. Append fehlt aber auch.


Auch das "Rewrite" hatte ich vergessen; das ist richtig. Aber danach funktionierte es dann auch mit Text als Typ.