Einzelnen Beitrag anzeigen

blackdrake

Registriert seit: 22. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#11

Re: Exception beim Createn eines IniFiles

  Alt 22. Aug 2008, 23:35
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 + '.inithen
    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
Daniel Marschall
  Mit Zitat antworten Zitat