Einzelnen Beitrag anzeigen

fortuneNext

Registriert seit: 11. Aug 2007
Ort: Neuss
133 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Exception beim Createn eines IniFiles

  Alt 22. Aug 2008, 23:07
Die Frage ist zwar schon geklärt, aber ich antworte trotzdem nochmal auf Daniels Post
1. Ich habe mir angewöhnt, Eintrag 0 eines Arrays immer leer zu lassen bzw. für irgendwelche Sonderoptionen offen zu lassen, und die eigentliche Zählung erst beim 1. Element beginnen zu lassen. In 0 schreibe ich dann z.B. öfters mal die Gesamtzahl der Elemente, das fand ich immer sehr praktisch
2. Inc(x) -> das kannt ich noch nicht, danke ;D
3. Den TLanguageFile hatte ich gepostet - ist quasi ein normales IniFile mit einer Zusatzfunktion. Das habe ich allerdings gerade auch geändert, sodass die LanguageFile Variablen TIniFiles sind.
4. Mit F7 arbeite ich IMMER sehr nützlich. Ich hatte auch geschrieben wo genau die Exception auftritt, aber gut, ich kanns auch kommentieren Da ich grad aber schonwieder eine Exception habe probier ichs doch gleich mal aus... diesmal habe ich nicht den gleichen Fehler gemacht (hoffe ich)

UNIT 1: mLeer (eine leere Testform enthalten)
Relevante Teile:
Delphi-Quellcode:
procedure TfTest.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  BasicControl.OpenFile('test');
  fTest.Caption := BasicControl.ReadEntry('fTestCaption'); //Exception
end;
UNIT 2: mBase (keine Form und auch sonst nichts)
Relevante Teile (hauptsächlich die function TBasicControl.ReadEntry, ich habe aber auch mal die Erstellung gepostet, man kann ja nie wissen):
Delphi-Quellcode:
uses
   IniFiles, SysUtils, Classes, Dialogs;

type
   TBasicControl = class(TObject)
   private
   {}
   public
   procedure OpenFile(LanguageName: string);
   procedure FreeIni;
   function ReadEntry(Entry:string):string;
   end;

var
  LanguageFiles: Array of TIniFile;
  UsedLanguageFile: TIniFile;
  UsedLanguageFilePath: String;
  BasicControl: TBasicControl;

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;

function TGBasicControl.ReadEntry(Entry:string):String;
begin
  Result := UsedLanguageFile.ReadString('words', Entry, 'missing'); //Exception
end;

end.

Wie man sieht, muss ich noch viel üben... ich mache wohl einfach noch zu viele dumme Anfängerfehler, die eigentlich völlig unnötig sind, und auf die ich dann auch einfach nicht komme...
Naja. Da man in der Schule leider nichts vernünftiges lernt, ist man als Wissensquelle eben auf Tutorials, Denken und Forenhilfe angewiesen
Ich finde die Hilfe hier richtig gut muss ich sagen. Schnell, gut erklärt und kein "man bist du dumm!!!". Da versteht mans direkt und machts (meistens) nächstes Mal besser.
mfg
fortuneNext
Tim
"Hilfe & Support konnte nicht geöffnet werden. Bitte öffnen sie Hilfe & Support, um das Problem zu beheben."
"No Keyboard found. Press F1 to continue."
  Mit Zitat antworten Zitat