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 kannwü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 machenbis 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);