Hallo Zusammen!
Ich habe folgendes Problem:
In einem Programm werden mehrfach über assignfile unterschiedliche Records gelesen, geschrieben, verschoben. Ich möchte eine Programmoptimierung vornehmen und für den Zugriff eine Unit verwenden. In einer Procedure dieser Unit sollen die unterschiedlichsten Records geschrieben/gelesen werden.
Beispiel Record 1:
Delphi-Quelltext
1: 2: 3: 4:
| DB01type = record name : string[30]; vorname : string[30]; end; |
Beispiel Record 2:
Delphi-Quelltext
1: 2: 3: 4:
| DB02 type = record farbe : string[12]; art : integer; end; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| var
db01file : file of DB01type; db02file : file of DB02type;
db01rec : DB01type; db02rec : DB02type; |
In der Unit DBxy steht zum Auslesen des xten Records die Procedure:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| Procedure DBRead(var f:file;Dateiname:string;var unirecord;recno:integer); begin AssignFile(f,Dateiname); {$i-} ReWrite(f); {$i+} if ioresult <> 0 then ShowMessage('IO Fehler') else begin Seek(f,recno); Read(f,unirecord); CloseFile(f); end; end; |
Im Hauptprogramm soll nun mit
Delphi-Quelltext
1: 2:
| DBRead(db01file,'c:\daten01,dat',db01rec,5); oder DBRead(db02file,'c:\daten02,dat',db02rec,5); |
die Records ausgelesen werden. Problem ist die Parameterübergabe in der Unit. Irgendwie funktioniert nichts richtig. Entweder stimmen die Typen nicht überein oder sonstige Fehler tauchen auf. Funktioniert Assignfile in einer Unit überhaupt? Bzw. die Übergabe einer untypisierten Dateivariable?
Hoffe ich habe mich verständlich ausgedrück.
Wäre für kleine oder größere Denkanstöße dankbar!
Moderiert von
Narses: Delphi-Tags hinzugefügt
Moderiert von
Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.