Frage zu TIniFile



  • also dann mal meine nächste Frage,

    ich lade im form einstellungen den pfad der ini datei über eine DriveComboBox und DirectoryListBox und lasse diesen in eine ini schreiben
    -Beispiel---------------------
    [User]
    IniDir=C:\Dir1\Dir2
    ------------------------------
    das funzt auch super!
    Nun wollte ich diesen pfad wieder auslesen um die bestimmte ini zu öffnen
    und zu bearbeiten
    also EditFelder zuweisen die beim laden mit den aktuellen werten gefüllt werden und dann editiert werden können und beim klick auf speichern in der ini gespeichert werden!
    wie kann ich an den pfad wie oben nun sagen lade
    C:\Dir1\Dir2\bla1.ini und im nächsten Form lade
    C:\Dir1\Dir2\bla2.ini 😕
    da das rootdir immer gleich bleibt!

    danke euch schonmal



  • Kannst du dein Problem vielleicht nochmals etwas exakter formulieren. Bedenke, wir kennen dein Projekt nicht und irgendwie werd ich aus deinen Äusserungen nicht schlau...

    Versuch den Fokus etwas vom Problem zu lösen. Vielleicht hilft es wenn du die Frage nochmals liest, bevor du postest und dich fragst ob wohl ein aussenstehender das Problem verstehen könnte...

    -junix



  • Wie kann ich im BCB TIniFile benutzen??????????????????????????? 😮



  • also ich versuchs nochmal

    gegeben ist ein Pfad C:\Dir1\Dir2 der in einer ini gespeichert ist!
    das mache ich so

    void __fastcall Tfrm_einstellungen::FormCreate(TObject *Sender)
    {
     TIniFile *ini;
     ini=new TIniFile(ChangeFileExt(Application->ExeName,".ini"));
     lba_rootdir->Caption = ini->ReadString("Users","RootDir","");
     delete ini;
    }
    

    jetzt müsste ich diesen pfad weiterverwenden um die zwei ini's im verzeichnis
    zu öffnen und zu bearbeiten!

    wie gebe ich den Pfad genau an 😕 der in der erzeugten ini gespeichert ist!? er steht ja als Caption im Label nur der ini name fehlt!

    wie öffne ich die ini auf der Grundlage des gespeicherten Pfadangabe in der
    erzeugten ini?

    also praktisch hab ich

    TIniFile *ini;
    ini=new TIniFile(lba_rootdir->Caption + "\Name.ini");

    ich krigs nicht gebacken ... steh wiedereinmal vor einer Wand 😕



  • Geh mal nicht ganz direkt aufs Ziel los. Mit

    AnsiString fName;

    hast du bessere Karten. Bau dir den String zusammen und weis ihn dann FileName zu.



  • also ich weiss nu nich wie du das meinst
    kannst mir nen beispiel posten... bitte!

    ne andere möglichkeit hab ich gefunden mit OpenDialog
    dann muss ich ihn aber 2mal verwenden und hab den genauen vollständigen pfad mit
    dem filenamen in der Prog ini stehn!
    lasse ihn in einem Label ausgeben um es zu prüfen ... funzt

    aber wenn ich den pfad laden will
    funzt es wieder nicht 😞

    TIniFile *ini;
    ini=new TIniFile(lba_rootdir->Caption);
    Edit3->Caption=ini->ReadString("Section","Ident","Wert");
    delete ini;
    


  • Original erstellt von 0Bytes:
    **wie öffne ich die ini auf der Grundlage des gespeicherten Pfadangabe in der
    erzeugten ini?
    **

    😕 ?????????????????????????????????????????????????????????? :confused

    GAR NICHT!!!

    Du willst die Ini- Datei in dem (in der Ini gespeicherten) Pfad suchen und oeffnen???

    Das geht nicht, Du muesstest ja den (gespeicherten) Namen kennen, um an die (gespeicherte) Info 'ranzukommen!

    Das musst Du in einem festgelegten Pfad speichern - z.B. in Registry!

    Speicher die Ini doch im Pfad des Programmes. den Pfad haste in Application->ExeName enthalten. Mit SubString und Stringergaenzung um Ini- Namen haste den kompletten Pfad!



  • Was Omega-X meinte ist das:

    AnsiString fIniFile;
    

    Das würdest du in der Klassendefinition deklarieren...

    In deiner MEthode würdest du es so machen:
    DAs istr als Beispiel gedacht... Das du es siehst wie man es am besten macht...

    void __fastcall Tfrm_einstellungen::FormCreate(TObject *Sender)
    {
      this->fIniFile = ChangeFileExt(Application->ExeName,".ini");
      TIniFile *ini = new TIniFile(this->fIniFile);
      lba_rootdir->Caption = ini->ReadString("Users","RootDir","");
    
      if(ini)
      {
        delete ini;
      }
    }
    


  • Ich dachte das etwa so:

    AnsiString fName = Edit3->Caption+".ini";
        ini->FileName = fName;
    

    Plazier am besten mal den Cursor auf TIniFile und geh auf F1.

    Kannst auch mal auf den Link in @AndreasW's Sig gehen. Eine sehr schöne Doku. Auf TIniFile wird sehr detailiert eingegangen.



  • Sorry Leute wegen der blöden Fragerei,

    aber ich bin ein Blödmann ehrlich,
    es konnte nicht gehn, weil ich die zu ladende/auszulesende ini Datei geladen hab
    *kopfschüttel

    ich hab mitbekommen das ich immer die ini des progs geladen hab, da konnten wohl kaum die daten drin sein die ich auslesen wollte

    nu hab ich die variante mit zwei OpenDialog um den completten pfad mit ini namen in der Prog ini abzuspeichern

    davonabgesehen hab ich eure hinweise durchprobiert und sie funzen genauso ich hätte nur besser aufpassen sollen oder nach xx Stunden Borland mal nen Spaziergang machen sollen dann klappts auch mit TIniFile 😉

    habt vielen Dank für Eure Hinweise
    haben mir viele Denkanstösse gegeben
    seid ein klasse forum
    Danke



  • Original erstellt von 0Bytes:
    haben mir viele Denkanstösse gegeben
    seid ein klasse forum
    Danke

    Sowas hören wir gerne... Macht uns auch wieder munter, weiter zu helfen. 🙂


Anmelden zum Antworten