Projekt Datein im eigenem Programm



  • Hallo

    schau dir erstmal in der BCB-FAQ hier im Forum das Beispiel zu TStringList in der Top 3 an.

    bis bald
    akari



  • OK danke ich bin jetzt schonmal soweit das er alles in eine datei speichert.
    Mein Code sieht so aus:

    SaveDialog2->Execute();
    TStringList *list = new TStringList();
    list->Add(weaponsound->Text);
    list->Add(Everyframe->Text);
    list->Add(PrimaryAttack->Text);
    list->Add(SecondaryAttack->Text);
    list->Add(Reload->Text);
    list->Add(WeaponSwapHands->Text);
    list->Add(WeaponFOV->Text);
    list->Add(WeaponSlot->Text);
    list->Add(WeaponSlotPos->Text);
    list->Add(FiresUnderwater->Text);
    list->Add(ReloadsSingly->Text);
    list->Add(Damage->Text);
    list->Add(PrimaryShotDelay->Text);
    list->Add(SecondaryShotDelay->Text);
    list->Add(PrimaryIsAutomatic->Text);
    list->Add(SecondaryIsAutomatic->Text);
    list->Add(BS1->Text);
    list->Add(BS2->Text);
    list->Add(BS3->Text);
    list->Add(VK1->Text);
    list->Add(VK2->Text);
    list->Add(VK3->Text);
    list->Add(VKR1->Text);
    list->Add(VKR2->Text);
    list->Add(VKR3->Text);
    list->Add(ViewModel->Text);
    list->Add(WorldModel->Text);
    list->Add(ClassName->Text);
    list->Add(PrimaryAmmoType->Text);
    list->Add(SecondaryAmmoType->Text);
    list->Add(MaxClipPrimary->Text);
    list->Add(MaxClipSecondary->Text);
    list->Add(DefaultClipPrimary->Text);
    list->Add(DefaultClipSecondary->Text);
    list->Add(AnimPrefix->Text);
    list->Add(PrintName->Text);
    list->Add(PrimaryScriptOverride->Text);
    list->Add(SecondaryScriptOverride->Text);
    list->Add(BSZ1->Text);
    list->Add(BSZ2->Text);
    list->Add(BSZ3->Text);
    list->Add(OnReload->Text);
    list->Add(GetNumShotsPE->Text);
    list->Add(GetNumShotsSE->Text);
    list->SaveToFile(SaveDialog2->FileName);
    delete list;
    

    doch jetzt ist die frage wie lade ich das wieder ein (tut mir echt leid für die dummen fragen ich bin echt schlecht 😞 )

    ich weis nicht aber geht das vieleicht so:

    TStringList *list = new TStringList();
    list->LoadFromFile(OpenDialog1->FileName);
    

    ich schätze mal das geht so doch wie gehts weiter wie kann ich das wieder in die Steuerelemente einfügen.



  • Hallo

    indem du mit das AnsiString-Array list->Strings mit der Größe list->Count durchgehst und diese einzelnen Zeilen der Reihe nach wieder ausliest.

    Achtung, ich weiß dich nochmal draufhin, das diese Methode so einfach nur funktioniert, wenn in deinen Daten aus den Controls keine Zeilenumbruche drin sind. Dann must du entweder die Zeilenumrüche in den betreffenden Texten erstetzen oder dir die Länge der Texte auch mitspeichern.

    bis bald
    akari



  • in 4 controls sind zeilenumbrüche
    nun es wäre net wenn du mir sagst wie ich die zeilen umbrüche ersetze und dan wieder zurck zu zeilenumbrüchen.

    PS:wie kann ich das einlesen kannst du mir bitte ein beispiel geben

    Vielen Dank schonmal du hast mir sehr geholfen



  • Hallo

    schau dir die Funktion StringReplace() in der BCB-Hilfe an. Ein Zeilenumbruch wird durch die Zeichenkette "\r\n" dargestellt.

    bis bald
    akari



  • werd ich machen THX



  • so nach langen probieren ist es mir gelungen mit der StringReplace Funktion umzugehen.
    Jetzt habe ich nur noch das problem das ich nicht weis wie ich die liste wieder einladen kann

    würde bitte jemand so net sein es mir zu erklären

    Danke

    Mfg Happymax



  • weis den wirklich niemand wie das geht oda will mir das keiner sagen. 😞

    Bitte ich brauch hilfe

    Mfg Happymax



  • Hallo

    - die Datei in eine Stringsliste wieder mit LoadFromFile einladen
    - Die einzelnen Zeilen der Reihe nach mit der Eigenschaft TStringList::Strings[] auslesen, und an die passenden übergeben
    - wenn nötig die Zeilenumbruchersetzung mit StringReplace wieder rückgängig machen

    bis bald
    akari



  • - Die einzelnen Zeilen der Reihe nach mit der Eigenschaft TStringList::Strings[] auslesen, und an die passenden übergeben

    Sorry wie kann ich den die einzelnen Zeilen auslesen
    den rest hab ich schon geschaft ich habs auch kapiert
    blos ich weis net wie ich das machen soll gibt es da
    ne vorgefertigte funktion oder muss man sich das irgendwie
    selbst zusammenbasteln (wenn ja wie?)

    THX

    MFG Happymax



  • Hallo

    TStringList *list = new TStringList();
    list->LoadFromFile(OpenDialog1->FileName);
    if (list->Count > 1)
    {
      AnsiString ErsteZeile = list->Strings[0];
      AnsiString ZweiteZeile = list->Strings[1];
      }
    

    bis bald
    akari



  • Ich habe es anders hinbekomen

    ich danke dir für deine hilfe akari

    PS:

    Fals es jemand interesiert mein Code:

    OpenDialog1->Execute();
    TStringList *list2 = new TStringList();
    list2->LoadFromFile(OpenDialog1->FileName);
    weaponsound->Text = list2->Strings[0];
    Everyframe->Text = list2->Strings[1];
    PrimaryAttack->Text = list2->Strings[2];
    SecondaryAttack->Text = list2->Strings[3];
    Reload->Text = list2->Strings[4];
    WeaponSwapHands->Text = list2->Strings[5];
    WeaponFOV->Text = list2->Strings[6];
    WeaponSlot->Text = list2->Strings[7];
    WeaponSlotPos->Text = list2->Strings[8];
    FiresUnderwater->Text = list2->Strings[9];
    ReloadsSingly->Text = list2->Strings[10];
    Damage->Text = list2->Strings[11];
    PrimaryShotDelay->Text = list2->Strings[12];
    SecondaryShotDelay->Text = list2->Strings[13];
    PrimaryIsAutomatic->Text = list2->Strings[14];
    SecondaryIsAutomatic->Text = list2->Strings[15];
    BS1->Text = list2->Strings[16];
    BS2->Text = list2->Strings[17];
    BS3->Text = list2->Strings[18];
    VK1->Text = list2->Strings[19];
    VK2->Text = list2->Strings[20];
    VK3->Text = list2->Strings[21];
    VKR1->Text = list2->Strings[22];
    VKR2->Text = list2->Strings[23];
    VKR3->Text = list2->Strings[24];
    ViewModel->Text = list2->Strings[25];
    WorldModel->Text = list2->Strings[26];
    ClassName->Text = list2->Strings[27];
    PrimaryAmmoType->Text = list2->Strings[28];
    SecondaryAmmoType->Text = list2->Strings[29];
    MaxClipPrimary->Text = list2->Strings[30];
    MaxClipSecondary->Text = list2->Strings[31];
    DefaultClipPrimary->Text = list2->Strings[32];
    DefaultClipSecondary->Text = list2->Strings[33];
    AnimPrefix->Text = list2->Strings[34];
    PrintName->Text = list2->Strings[35];
    PrimaryScriptOverride->Text = list2->Strings[36];
    SecondaryScriptOverride->Text = list2->Strings[37];
    BSZ1->Text = list2->Strings[38];
    BSZ2->Text = list2->Strings[39];
    BSZ3->Text = list2->Strings[40];
    OnReload->Text = list2->Strings[41];
    GetNumShotsPE->Text = list2->Strings[42];
    GetNumShotsSE->Text = list2->Strings[43];
    delete list2;

    OnReload->Text = StringReplace(OnReload->Text,"| ..::Zeilenumbruch::.. |","\r\n",TReplaceFlags() << rfReplaceAll);
    Everyframe->Text = StringReplace(Everyframe->Text,"| ..::Zeilenumbruch::.. |","\r\n",TReplaceFlags() << rfReplaceAll);
    PrimaryAttack->Text = StringReplace(PrimaryAttack->Text,"| ..::Zeilenumbruch::.. |","\r\n",TReplaceFlags() << rfReplaceAll);
    SecondaryAttack->Text = StringReplace(SecondaryAttack->Text,"| ..::Zeilenumbruch::.. |","\r\n",TReplaceFlags() << rfReplaceAll);


Anmelden zum Antworten