Autor Beitrag
Teddy49
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Di 22.09.09 16:57 
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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
  DB01type = record
             name : string[30];
             vorname : string[30];
             end;

Beispiel Record 2:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
  DB02 type = record
              farbe : string[12];
              art   : integer;
              end;
ausblenden 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:
ausblenden 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
ausblenden 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 user profile iconNarses: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.