Einzelnen Beitrag anzeigen

Christopher

Registriert seit: 29. Aug 2003
9 Beiträge
 
#1

Gleiche Procedure mit unterschiedlichen ParameterTypen

  Alt 28. Aug 2004, 23:08
Hallo! Ich brauche mal Hilfe:

Ich habe in einer kleinen Verwaltungssoftware ein Problem. Ich habe zwei File of Records (File of TCustomer & File of TJob) und diese sollen zu Beginn des Programms in verschiedene Arrays (Array of TCustomer & Array of TJob) eingelesen werden. Dabei enthält eine Datei die Kunden und die andere die Termine.
Ich würde gerne eine Procedure haben die diese beiden Dateien in die beiden Arrays liest OHNE diese blöde Wiederholung des Quelltextes, wie unten zu sehen. Es ist ja alles genau zweimal vorhanden. Das finde ich äußerst unvorteilhaft. Am liebsten hätte ich eine Procedure, der ich den Dateinamen und das Array übergebe, in das die Datei geschreiben werden soll. Aber da die jeweiligen Datei und Arraytypen unterschiedlich sind (TJob / TCustomer) bekomme ich das nicht hin! Eine überladene Procedure würde ja zwar vom Aufruf her genau das bewirken, aber dann hab ich den Code trotzdem zweimal!

Hätte da jemand ne Lösung? Ich komm einfach nicht drauf.... DANKE!!!

Delphi-Quellcode:
procedure TFrmMain.ReadFileToArray();
var
  i : LongInt;
begin
  assignfile(CustomerFile, 'Customer.dat');
  if fileExists('Customer.dat')
  then
    begin
    Reset(CustomerFile);
    i := 0;
      while not EOF(CustomerFile) do
      begin
        setlength(Customer, i + 1);
        Seek(CustomerFile, i);
        read(CustomerFile, Customer[i]);
        inc(i);
      end;
    CloseFile(CustomerFile);
    end
  else
    begin
    setlength(Customer, 0);
    end;

//Und jetzt genau das gleiche mit TJob

  assignfile(JobFile, 'Job.dat');
  if fileExists('Job.dat')
  then
    begin
    Reset(JobFile);
    i := 0;
      while not EOF(JobFile) do
      begin
        setlength(Job, i + 1);
        Seek(JobFile, i);
        read(JobFile, Jobr[i]);
        inc(i);
      end;
    CloseFile(JobFile);
    end
  else
    begin
    setlength(Job, 0);
    end;
end;
  Mit Zitat antworten Zitat