Zitat von
Commander Tom:
Inzwischen hat die Prozedur aber leider 10000 Zeilen...
Du meinst, deine Prozedur sieht ungefähr so aus:
Delphi-Quellcode:
PROCEDURE TReportForm.frxReport1GetValue(CONST VarName: STRING; VAR Value: Variant);
BEGIN
IF CompareText(VarName, '1') = 0 THEN Value := MainForm.RegIniFile.ReadString(Datei, '1', '?')
else if CompareText(VarName, '2') = 0 THEN Value := MainForm.RegIniFile.ReadString(Datei, '2', '?')
else if CompareText(VarName, 'B8') = 0 THEN Value := MainForm.RegIniFile.ReadString(Datei, 'B8', '?')
// und hier noch 9997 weitere else Anweisungen
END;
Wäre gut gewesen, du hättest so ungefähr 3 Zeilen aus GetValue() angegeben, damit man das ganze Elend erkennen kann.
Also prinzipiell bräuchtest du eine Zuordnung zwischen dem Parameter VarName und dem Name in der Ini-Datei.
Diese Zuordnung kann man in einem Konstantenarray ablegen und später über eine For-Schleife auslesen:
Delphi-Quellcode:
type
TListEintrag = record
a:string;
b:string;
end;
const liste:array[1..10000] of TListEintrag = (
(a:'1'), (b:'1'),
(a:'2'), (b:'2'),
(a:'B8'), (b:'B8'),
...
)