Hallo, ich habe eine Prozedur zum Laden verschiedener Werte aus einer Datei, die dann in einen Record geschrieben werden sollen. Es ist vorher nicht bekannt wieviele Werte in der Datei stehen sodass dies dann dynamisch für den Record festgelegt werden muss. Desweiteren sollen der Prozedur verschiedene Records übergeben werden können, doch da liegt mein Problem: der Befehl setlength ist mit der Parameter-Variablen inkompatibel.
Hoffe auf eure Hilfe.
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: 67:
| type Katalog=record Name: string; Vorname: string; Geburtstag: string; LK: string; Strasse: string; PLZ: string; Ort: string; Tel1: string; Tel2: string; Mail: string; ICQ: string; end;
var Form1: TForm1; Buch: array of Katalog;
procedure TForm1.RecordLaden(Pfad: AnsiString; var LoadRec: array of Katalog); var Stream:TFileStream; i: integer; begin
Stream:=TFileStream.Create(Pfad, fmOpenRead); try with Treader.create(Stream,1024) do begin try i:=readinteger; setlength(LoadRec, i); for i:=0 to length(LoadRec)-1 do begin LoadRec[i].Name:=readstring; LoadRec[i].Vorname:=readstring; LoadRec[i].Geburtstag:=readstring; LoadRec[i].LK:=readstring; LoadRec[i].Strasse:=readstring; LoadRec[i].PLZ:=readstring; LoadRec[i].Ort:=readstring; LoadRec[i].Tel1:=readstring; LoadRec[i].Tel2:=readstring; LoadRec[i].Mail:=readstring; LoadRec[i].ICQ:=readstring; end; finally free; end; end; finally Stream.Free; end;
procedure TForm1.Button3Click(Sender: TObject); begin RecordLaden('C:\Bredow\Namen.adb', Buch); end; |
Danke schonmal für eure Hilfe!
LG Der Bofrost Mann