![]() |
IRC String durch for Schleife erweitern
Hallo, ich brauche mal bitte einen schnellen Denkanstoß.
Für meinen Map downloader speichere ich zurzeit die Mapliste in einer Ini datei:
Delphi-Quellcode:
Diese sollen im Programm ausgelesen werden, an einen String gehängt werden und anschließend verschickt werden.
[Maplist]
Anzahl=4 1=Test 2=Test 3=Test2 4=Test
Delphi-Quellcode:
if StrArr[0] = 'Maplist' then
begin ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+ 'maplist.ini'); try Anzahl := ini.ReadInteger('Maplist','Anzahl',''); for i := 1 to Anzahl-1 do Maps := ini.ReadString('Maplist',i,''); Maps := Maps+'|'; // An dieser Stelle komme ich nicht weiter. Wie hängt man den durch I ermittelten Wert hinten an den String dran? Damit das dann z.b. in den Schema ist: Maplist|Test|Test|Test2|Test ? Diese Werden über einen IRC Befehl an die Clients verschickt und ausgewertet. ( Die Clients reagieren nur wenn der Nickname "Masterserver" und das wort mit "Maplist" anfängt. finally ini.free; end; Das gleiche Problem haben die Clients dann leider auch. Ich hab mir das so vorgestellt das ich die Map anzahl direkt mitsende z.b. Maplist|4|Test|Test|Test2|Test Die werden dann durch eine Explode funktion im Programm in die Einzelteile aufgeteilt.
Delphi-Quellcode:
So in etwa hatte ich mir das vorgestellt, weiß aber nicht genau ob das wirklich so richtig ist.
if (StrArr[0] = 'Maplist') and (AUser.Nick = 'KKND|Masterserver') then
begin Anzahl := StrArr[1]; for i := 1 to Anzahl-1 do Form6.Maplist.Items.Add.Caption := StrArr[i]; end; |
Re: TCP String durch for Schleife erweitern
Delphi-Quellcode:
for i := 1 to Anzahl do // nix -1 ;-)
Maps := Maps + ini.ReadString('Maplist', IntToStr(i), '') + '|'; // IntToStr vergessen... Delete(Maps, Length(Maps), 1); // letzten | entfernen |
Re: IRC String durch for Schleife erweitern
Vielen Dank so funktioniert es :mrgreen:
Ich habs jetzt so gemacht
Delphi-Quellcode:
if StrArr[0] = 'Maplist' then
begin ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+ 'maplist.ini'); try Anzahl := ini.ReadInteger('Maplist','Anzahl',0); for i := 1 to Anzahl do Maps := Maps + ini.ReadString('Maplist', IntToStr(i), '') + '|'; Delete(Maps, Length(Maps), 1); finally ini.free; Irc.Say('#kkndreloaded', 'Maplist|'+InttoStr(Anzahl)+'|'+Maps); end; end; Client
Delphi-Quellcode:
if (StrArr[0] = 'Maplist') and (AUser.Nick = 'KKND|Masterserver') then
begin Anzahl := StrtoInt(StrArr[1]); for i := 2 to Anzahl+1 do begin Form6.Maplist.Items.Add.Caption := StrArr[i]; end; end; |
Re: IRC String durch for Schleife erweitern
Hallo!
Einfacher geht es in dem du den ganzen Text, per Irc verschickst (Beachte: Maximale Länge der Nachricht - also sollte der Text zu lang sein geht es nicht^) So würd ich das machen:
Delphi-Quellcode:
So musst du nicht die ini neu schreiben^
function SendIni:Boolean;
var List : TStringList; begin //Ini laden List := TstringList.Create; List.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'maplist.ini'); //Delimiter List.Delimiter := ','; //Senden irc.Say(Channel bzw. Person, '<M>' + List.DelimitedText); // List.Free; end; (*========Beim Empfangen========*) var Msg : string; List : TStringList; if Copy(aMessage,1,Pos('>',aMessage)+1) = '<M>' then begin Msg := Copy(aMessage,Pos('>',aMessage)+1,Length(aMessage)); List.Delimiter := ','; List.DelimitedText := Msg; // List.SaveToFile('Filename.ini'); List.Free; end; Hoffe es funktioniert, hab es nicht getestet! lg |
Re: IRC String durch for Schleife erweitern
Ich stehe gerade vor dem von dir genannten Problem.
Zuviele Maps zu wenig Zeichen. Wenn ich das mit dem Delimiter mache, dann wird aber jede Zeile einzeln gesendet und der Client weiß nichtmehr was wo dazu gehört. Ich könnte natürlich jeden String mit Maplist|Mapname|Author|Datum senden. Das geht in dem Sinne zwar, wirft aber Probleme beim Map update auf. Die Mapliste wird immer dann aktualisiert, wenn man die Map Datenbank Button im Form anklickt. Das bedeutet wenn ich 2x klicke, steht jede Map 2x in der Liste. Clearen kann ich das gante auch nicht, weil sonst hab ich immer nur die letzte Map |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz