Also irgendwie ist dein Code grotesk, nicht?
Delphi-Quellcode:
procedure TBasicControl.OpenFile(LanguageName: string);
var
SR: TSearchRec;
x: integer;
begin
x := 0;
if FindFirst(ExtractFilePath(ParamStr(0)) + 'Language\*.ini', faAnyFile, SR) = 0 then
begin
repeat
if (SR.Attr <> faDirectory) then
begin
x := x + 1;
SetLength(LanguageFiles, x + 1);
LanguageFiles[x] := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Language\' + sr.Name);
end;
until FindNext(SR) <> 0;
FindClose(SR);
end;
x := 0;
for x := 1 to high(LanguageFiles) do
begin
if ExtractFileName(LanguageFiles[x].FileName) = LanguageName + '.ini' then
begin
UsedLanguageFile := LanguageFiles[x];
UsedLanguageFilePath := UsedLanguageFile.FileName;
end;
LanguageFiles[x].Free;
end;
end;
Wenn ich das richtig verstehe, listest du alle Files, lädst diese in einen dyn. Array und dann gehst du diesen Array ab und suchst nach Sprachdatei "Deutsch.ini", diese lädst du dann in UsedLanguageFile und den Rest gibst du frei.
(Was übrigens trotzdem fehlt, ist, dass du den LanguageFiles-Array wieder auf Größe 0 herunterfährst.)
Aber wieso lädst du nicht sofort die Datei LanguageName + '.ini' in dein UsedLanguageFile? Wieso der Umstand mit der Auflistung der Sprachen?
Delphi-Quellcode:
function TBasicControl.OpenFile(LanguageName: string): boolean;
begin
if FileExists(ExtractFilePath(ParamStr(0)) + 'Language\' + LanguageName + '.ini') then
begin
UsedLanguageFile := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Language\' + LanguageName + '.ini');
UsedLanguageFilePath := UsedLanguageFile.FileName;
result := true;
end
else
begin
showmessage('Language file "'+LanguageName + '.ini" not found!');
result := false; // Programm soll in diesem Fall beendet werden!
end;
end;
Ich hoffe, dass ich deinen Code nicht verplant habe.
Gruß
blackdrake