Einzelnen Beitrag anzeigen

redeyes330

Registriert seit: 5. Jan 2008
8 Beiträge
 
#9

Re: Levelrotation.xml auslesbar?

  Alt 30. Jan 2008, 13:18
Hallo nochmal,

Mein Programm soll Wie folgt aussehen. Auf dem FTP meines Gameservers sind 2 XML-Dateien und 3 cfg-Dateien. Die CFG`s enthalten Verschiedene einstellungen. Die Einstellungen sind in Zeilen unterteilt. Das Programm soll nun in einem Advance Modus starten, sich mit dem FTP Verbinden und die CFG`s und die XML`s in memofelder einlesen.Soweit hatte selbst ich keine Probleme

Das ganze ist natürlich auch veränderbar um es wieder zu speichern und hochzuladen.

Jetzt habe ich das Programm mit einem Basic Modus erweitert. In diesem Modus sollen nicht die CFG`s und XML`s in memofelder, sondern Nur die Zahlen oder Worte der Jeweiligen Settings sollen in ein Edit feld.

Damit man sich das auch mal Vorstellen kann hier ein Bild von Vorhaben. Das "neue Programm" sollte in etwa gleich sein, nur sollen diesmal nicht nur die Dateien geschrieben werden, sondern auch der Basicmodus mit den einstellungen in den Dateien geladen werden.

http://people.freenet.de/redeyes330/progg.jpg

den Normalen Modus habe ich fertig. Den Basic Modus für den Mapcycle auch fast und mit dem speichern der CFG`s hab ich auch noch keine Probleme.

Meine Probleme:

1. Wenn ich die Maps in eine listbox wie auf dem Bild schreibe, soll das Programm So viele XML-nodes in der xml suchen , wie auch maps vorhanden sind. Ich habe das jetzt so gelöst aber gleichzeitig auf eine Map anzahl von 16 begrenzen müssen.
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
var
  i, j, anzahl: Integer;
begin
//ftp connecten
  ftp := TInetFTP.Create;
  ftp.server:= '81.3.59.69';
  ftp.User:= 'server4656';
  ftp.Password:= 'xxxx';
  ftp.Connect(true);
//levelrotation und maplist runterladen
  ftp.GetFile('server4656/levelrotation.xml', 'levelrotation.xml');
  ftp.GetFile('server4656/maplist.xml', 'maplist.xml');
//server starten
  form3.WebBrowser1.Navigate('http://server4656:xxxx@81.3.59.69:46569/start');
//levelrotation.xml laden
  memo2.Lines.Clear;
  memo2.Lines.LoadFromFile('levelrotation.xml');
  FDoc := XMLToDomParser1.ParseFile('levelrotation.xml', False);
  try
  i:= memo2.Lines.Count;
//überprüfen wieviele maps
  if i= (7) then
  anzahl:= (i-7);
  if i= (12) then
  anzahl:= (i-11);
  if i= (17) then
  anzahl:= (i-15);
  if i= (22) then
  anzahl:= (i-19);
  if i= (27) then
  anzahl:= (i-23);
  if i= (32) then
  anzahl:= (i-27);
  if i= (37) then
  anzahl:= (i-31);
  if i= (42) then
  anzahl:= (i-35);
  if i= (47) then
  anzahl:= (i-39);
  if i= (52) then
  anzahl:= (i-43);
  if i= (57) then
  anzahl:= (i-47);
  if i= (62) then
  anzahl:= (i-51);
  if i= (67) then
  anzahl:= (i-55);
  if i= (72) then
  anzahl:= (i-59);
  if i= (77) then
  anzahl:= (i-63);
  if i= (82) then
  anzahl:= (i-67);
//Maps mit Pfad in memo
  for i := 0 to (anzahl) do
  memo1.Lines.Add(FDoc.GetElementsByTagName('level').Item(i).Attributes.GetNamedItem('name').NodeValue);
  except
  ShowMessage('Fehler mit der Levelrotation');
  end;
//letzet wort, nur Mapnamen
  for i := 0 to Pred(Memo1.Lines.Count) do
  Memo1.Lines[i] := LastWord(Memo1.Lines[i], '/');
//Mapnamen in die ListBox
  for i := 0 to Pred(Memo1.Lines.Count) do
  listbox1.Items.Add(memo1.Lines[i]);
  FDoc.Free;
2. Ich weiß nicht wie ich das mit der CFG-Datei machen kann. Ich habe jetzt folgendes Versucht mit dem ergebniss das ich die einstellungen auslesen kann. Jedoch soll das Programm ja nach einem bestimmten wort z.B servername suchen und dann die einstellung hinter dem wort, also Drachen-Gilde.com in ein Editfeld schreiben
Delphi-Quellcode:
function Without(const s: string; charSet: TSysCharSet): string;
var
  i, iDel: Integer;
begin
  Result := s;
  iDel := 0;
  for i := 1 to Length(s) do
    if not (s[i] in charSet)
      then Result[i - iDel] := s[i]
      else Inc(iDel);
  SetLength(Result, Length(s) - iDel);
end;

function LastWord(const s, delimiters: string): string;
var
  iPos, iLength: Integer;
begin
  iPos := LastDelimiter(delimiters, s);
  iLength := Length(s) - iPos;
  Result := AnsiRightStr(s, iLength);
end;

procedure TForm1.FormShow(Sender: TObject);
const
  DIGITS = ['"'];
begin

  memo1.Lines.LoadFromFile('server.cfg');

  for i := 0 to Pred(Memo1.Lines.Count) do
  memo2.Lines.Add(Without(Memo1.Lines[i], DIGITS));
  for i := 0 to Pred(Memo1.Lines.Count) do
  memo3.Lines.Add(LastWord(Memo2.Lines[i], ' ='));

end;
3. Naja das ist mehr eine bitte . Da ich das was ich im mom benutze so ziemlich verstehe wäre es net schlecht wenn mann es auch so in der Art machen könnte. Auch wenn es etwas länger ist, Hauptsache ich versteh das Programm auch noch ohne das ich mich in die tiefen abgründe von Delphi stürzen muss.

Im Anhang noch die Dateien

Gruß Red
Angehängte Dateien
Dateityp: rar levelrotation_svr_starten_stoppen_640.rar (483,1 KB, 0x aufgerufen)
  Mit Zitat antworten Zitat