TIni Datei



  • void __fastcall TForm3::FormCreate(TObject *Sender)
    {
      AnsiString Nick;
      AnsiString Loginname;
      AnsiString Password;
      AnsiString IP;
      AnsiString Servername;
    
      TIniFile *TsDatei = new TIniFile( "Data\\TsDatei.ini");
      TStringList *SList=new TStringList();
      TsDatei->ReadSections(SList);
      for (int i=1;i<=SList->Count;i++)
      {
    	Servername=SList->Strings[i-1];
    	Nick=TsDatei->ReadString(Servername,"Nick",0);
    	Loginname=TsDatei->ReadString(Servername,"Loginname",0);
    	Password=TsDatei->ReadString(Servername,"Password",0);
    	IP=TsDatei->ReadString(Servername,"IP",0);
      }
    	ListBox1->Items=SList;
    	ListBox1->ItemIndex=100;
    	delete TsDatei;
    	delete SList;
    
      }  // zum auslesen und in die Listbox anzuzeigen
    //---------------------------------------------------------------------------
    
    void __fastcall TForm3::Button1Click(TObject *Sender)
    {
      AnsiString Nick;
      AnsiString Loginname;
      AnsiString Password;
      AnsiString IP;
      AnsiString Servername;
    
      TIniFile *TsDatei = new TIniFile( "Data\\TsDatei.ini");
      TStringList *SList=new TStringList();
      TsDatei->ReadSections(SList);
      for (int i=1;i<=SList->Count;i++)
      {
    	Servername=SList->Strings[i-1];
    	Nick=TsDatei->ReadString(Servername,"Nick",0);
    	Loginname=TsDatei->ReadString(Servername,"Loginname",0);
    	Password=TsDatei->ReadString(Servername,"Password",0);
    	IP=TsDatei->ReadString(Servername,"IP",0);
      }
    	ListBox1->Items=SList;
    	ListBox1->ItemIndex=100;
    	delete TsDatei;
    	delete SList;
    
      AnsiString Command;
      Command= "start teamspeak://"+IP+"?nickname="+Nick+"?loginname="+Loginname+"?password="+Password;
      system(Command.c_str());
    
      Close();
    }        // zum connecten auf den ts
    

    Also die TIni datei wird richtig abgespeichert!!
    Aber sobalt man mehr als zwei acc in der datei abgespeichert hat connectet man immer auf den selben TS Server.

    Bitte um hilfe



  • Schau doch mal mit dem Debugger durch. Statt system(start...) sollte man lieber ShellExecute nehmen.

    Gruss



  • Du liest die komplette Ini-Datei und zum Schluß stehen dann natürlich die Werte aus der letzten Sektion in den AnsiStrings.

    Wie willst du den angeben mit welchem Server du dich verbinden willst?



  • Das is ja mein prob ich habe keinen plan wie ich das hinbekommen kann so das ich auf den ts connecte den ich in der Listbox anklicke were nett wenn einer vielleicht den passenden code dafür schreiben kann dann wer mir echt sehr geholfen!!!



  • hi,

    ich hoffe ich kann dir helfen

    zur übersicht wäre vllt vorteilhaft die einlese prozedur der ini-datei in eine sep.funktion zu packen und diese dann aus formcreate aufzurufen

    das selbe könntest du machen zum füllen deiner listbox

    nun könntest du dein ini-datei aufgebaut haben wie folgt

    [default]
    nick=nickname
    server=server1
    password=password1
    login=login1
    ip=ip1

    [server1]
    nick=nickname
    password=password1
    login=login1
    ip=ip1
    [server2]
    nick=nickname
    server=server1
    password=password1
    login=login1
    ip=ip1

    etc.
    bei aufruf liest du die daten ein der sektion "default" und benutzt diese zum verbinden

    beim manuellen verbinden, kannst du deinen ausgewählten eintrag
    listbox->items->item[1]

    __property bool Selected[int Index] = {read=GetSelected, write=SetSelected};
    

    beispiel:

    for (int i = 0; i < ListBox1->Items->Count; i++)
    
    { 
      if (ListBox1->Selected[i])
      {
        ListBox1->Items->Strings[i]  <<-- tue irgendwas      
      }
    }
    

    ..ausgewählten eintrag als "default" speichern in der ini

    gruß
    x


Anmelden zum Antworten