AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem bei schleife

Ein Thema von RedShakal · begonnen am 29. Jul 2009 · letzter Beitrag vom 29. Jul 2009
Antwort Antwort
RedShakal
(Gast)

n/a Beiträge
 
#1

Problem bei schleife

  Alt 29. Jul 2009, 00:02
Hallo zusammen, ich habe in meinen Programm eine ListBox mit 2 Spalten. Die erste Spalte gibt den Namen an und die zweite Spalte den Authoren.

Die Strings werten von einem MasterServer direkt zum Client übertragen.

Masterserver:

Delphi-Quellcode:
[Maplist]
Anzahl=8
1=CYT_vs_unfair|D-FENS
2=area_Fayt_51|D-FENS
3=Die_Sanduhr|D-FENS
4=Krossfire|D-FENS
5=newm_01|-
6=newm_02|-
7=newm_03|-
8=newm_04|-
Dieser schickt es in einem String in folgendem Schema zum Client:

CYT_vs_unfair|D-FENS|area_Fayt_51|D-FENS|Die_Sanduhr|D-FENS usw.

Der Client zerteilt das | wieder in Einzeleile und wertet diese aus.

Das Problem liegt jetzt in einer Schleife bei der übernahme in die Listbox

Delphi-Quellcode:
  if (StrArr[0] = 'Maplist') and (AUser.Nick = 'KKND|Masterserver') then
    begin
      Form6.Maplist.Clear;
      Anzahl := StrtoInt(StrArr[1]);

      for i := 2 to Anzahl do
        begin
          LI := Form6.Maplist.Items.Insert(i);
          LI.Caption := StrArr[i];
          LI.SubItems.Add(StrArr[i+1]);
        end;
    end;
I fängt aus dem Grund bei 2 an, weil die 0 den Befehl "Maplist" enthält, an dem sich die Clients orientieren und wissen, welcher Befehl gerade kommt. Die 1 ist vergeben, weil sie die Anzahl der verschickten Maps mitsich bringt.

Wenn ich das so Starte, ist immer nur jeder Zweite Eintrag in der Listview korrekt.

Die Listview sieht dann so aus:
CYT_vs_unfair D-FENS
D-FEN area_Fayt_51
area_Fayt_51|D-FENS

usw.

Kann mir jemand helfen?
  Mit Zitat antworten Zitat
Benutzerbild von ich2
ich2

Registriert seit: 7. Dez 2005
Ort: Würzburg
54 Beiträge
 
#2

Re: Problem bei schleife

  Alt 29. Jul 2009, 07:40
Hallo RedShakal

in der Schleife passiert folgendes (wenn ich das richtig entnommen habe):
du erstellt für jeden Eintrag in deiner Stringliste ein neues Item in der Listview und erstellst dazu
ein Subitem mit dem direkt folgendem Eintrag in der Stringliste....so weit so gut...
du willst jetzt aber bestimmt nur jeden zweiten Eintrag bekommen?

schau dir mal das hier an:

Delphi-Quellcode:
if (StrArr[0] = 'Maplist') and (AUser.Nick = 'KKND|Masterserver') then
    begin
      Form6.Maplist.Clear;
      Anzahl := StrtoInt(StrArr[1]);

      for i := ( Anzahl - 2 ) div 2 do
        begin
          LI := Form6.Maplist.Items.Insert ( 2 * i - 1 );
          LI.Caption := StrArr [ 2 * i - 1 ];
          LI.SubItems.Add ( StrArr [ 2 * i ] );
        end;
    end;
mfg
Wissen ist Macht. Das ändert aber so gut wie nichts an der Übermacht der Dummheit.
  Mit Zitat antworten Zitat
RedShakal
(Gast)

n/a Beiträge
 
#3

Re: Problem bei schleife

  Alt 29. Jul 2009, 11:39
ich hab jetzt auf deinem code basierend ein bisschen rumprobiert und so klappt es soweit, aber leider fehlt der letzte eintrag :/

Delphi-Quellcode:
  if (StrArr[0] = 'Maplist') and (AUser.Nick = 'KKND|Masterserver') then
    begin
      Form6.Maplist.Clear;
      Anzahl := StrtoInt(StrArr[1]);

    for i := 2 to Anzahl do
        begin
          LI := Form6.Maplist.Items.Insert ( 2 * i - 1 );
          LI.Caption := StrArr [ 2 * i - 2];
          LI.SubItems.Add ( StrArr [ 2 * i - 1 ] );
        end;
    end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Problem bei schleife

  Alt 29. Jul 2009, 12:14
Natürlich fehlt der letzte Eintrag. In Anzahl steht 8, Du durchläufst die Schleife von 2 bis 8 einschließlich, d.h. 7 mal.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
RedShakal
(Gast)

n/a Beiträge
 
#5

Re: Problem bei schleife

  Alt 29. Jul 2009, 12:23
Ah super Denkfehler! Danke
  Mit Zitat antworten Zitat
RedShakal
(Gast)

n/a Beiträge
 
#6

Re: Problem bei schleife

  Alt 29. Jul 2009, 12:58
Ich nochmal: Ich habe jetzt eine 3te Spalte hinzugefügt die das Upload Datum enthällt.

Delphi-Quellcode:
if (StrArr[0] = 'Maplist') and (AUser.Nick = 'KKND|Masterserver') then
    begin
      Form6.Maplist.Clear;
      Anzahl := StrtoInt(StrArr[1]);

    for i := 1 to Anzahl do
        begin
          LI := Form6.Maplist.Items.Insert(3*i-1);
          LI.Caption := StrArr[3*i-1];
          LI.SubItems.Add ( StrArr[3*i] );
          LI.SubItems.Add ( StrArr[3*i-2] );
        end;
    end;

Leider muss ich gestehen das ich nicht weiß warum das so funktioniert aber ich hoff es kann mir jemand erklären.

Der Code funktioniert soweit Prima, leider ist aber in der ersten Spalte ein kleiner Fehler. ( Irgentwo ist das auch logisch weil i = 1 enthält ja eigentlich die Anzahl der übermittelten Maps. Aber leider fehlt die erste Zeile komplett wenn ich I = 2 mache.

http://i27.tinypic.com/30j45ew.jpg
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Problem bei schleife

  Alt 29. Jul 2009, 13:13
Hallo,

und beim 4. Eintrag geht alles wieder von vorne los.
Du machst es dir aber auch künstlich schwer.

entwder Explode (hier mal suchen) oder zu Fuss über eine StringList

IniList ist eine Liste aller "Zeilen"

Delphi-Quellcode:
sl: TStringList;

  sl:= TStringList.Create;

  for iList:= 0 to IniList.Count-1 do
  begin
    sl.Delimiter:= '|';
    sl.DelimitedText:= 'CYT_vs_unfair|D-FENS'

   // jetzt ist in sl[0] 'CYT_vs_unfair' und in sl[1] 'D-FENS'



    ListView.Items.Add;
    ListView.Caption:= sl[0];
  end;

Heiko
Heiko
  Mit Zitat antworten Zitat
RedShakal
(Gast)

n/a Beiträge
 
#8

Re: Problem bei schleife

  Alt 29. Jul 2009, 13:33
ich benutze doch bereits die explode funktion
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz