Thema: Delphi Internet to Listview

Einzelnen Beitrag anzeigen

RedShakal
(Gast)

n/a Beiträge
 
#3

Re: Internet to Listview

  Alt 15. Aug 2009, 17:41
Ich habe das ganze jetzt nochmal auf TCPIP Basis probiert:


Der Client:

Delphi-Quellcode:
procedure TForm6.Button3Click(Sender: TObject);
var
  Maps : string;
  LI : TListItem;
  StrArr : TDynStringArray;
begin

 if Form1.Client.Connected = false then
    begin
      Form1.Client.Connect(3000);
    end;
    
  Form1.Client.WriteLn('Maplist');
  Maps := Form1.Client.ReadLn;

  if Length(Maps) > 0 then
    begin
      Maplist.Clear;
      StrArr := Explode('|', Maps);
      LI := Form6.Maplist.Items.Insert(0);
      LI.Caption := StrArr[1];
      LI.SubItems.Add(StrArr[3]);
      LI.SubItems.Add(StrArr[2]);
    end;

  Form1.Client.Disconnect;
end;

Der Server:

Delphi-Quellcode:
if StrArr[0] = 'Maplistthen
    begin
       ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+ 'maplist.ini');
       try
         Anzahl := ini.ReadInteger('Maplist','Anzahl',0);
         for i := 1 to Anzahl do
           Maps := ini.ReadString('Maplist', IntToStr(i), '');
           AThread.Connection.WriteLn('Maplist|'+Maps);
           Sleep(100);
          finally
            ini.free;
          end;
    end;

Die Maplist:

Delphi-Quellcode:
[Maplist]
Anzahl=4
1=area_Fayt_51|D-FENS|29.07.09
2=Die_Sanduhr|D-FENS|29.07.09
3=Krossfire|D-FENS|29.07.09
4=Iron_Mountain|D-FENS|02.08.09
5=CenterWar|veCtor|17.07.09
6=WaterPath|veCtor|21.07.09
7=Maptest|RedShakal|08.08.09
8=newm_01|-|26.07.09
9=newm_02|-|26.07.09
10=newm_03|-|26.07.09
11=newm_04|-|26.07.09
12=mlti_01|-|10.08.09
13=mlti_02|-|10.08.09
14=mlti_03|-|10.08.09
15=mlti_04|-|10.08.09
16=mlti_05|-|10.08.09
17=mlti_06|-|10.08.09
18=mlti_07|-|10.08.09
19=mlti_08|-|10.08.09
20=mlti_09|-|10.08.09
21=mlti_10|-|10.08.09
22=mlti_11|-|10.08.09
23=mlti_12|-|10.08.09
24=mlti_13|-|10.08.09
25=mlti_14|-|10.08.09
26=mlti_15|-|10.08.09
Erklärung:

1. Client schickt Anfrage zum Server
2. Server wertet Anfrage aus
3. Server öffnet Map Datenbank ( Ini Datei )
4. Map liest Wert "Anzahl" aus der angibt, wieviele Maps vorhanden sind
5. Server arbeitet Map 1 bis Map (Wert von Anzahl) aus

Bis hierhin funktioniert alles soweit.

6. Server schickt Stringweise die Daten zum Client
7. Der Client schreibt jeden String in die Listview

Wo ist das Problem?

Beim Client kommt immer nur die letzte Map an.
In meinem Fall steht Anzahl auf 4, daher kommt nur Iron_Mountain|D-FENS|02.08.09 in der Listview an.
Ich hatte auch schon versucht die Anzahl in dem String mitzuschicken, aber das endete darin, das ich 3 Leerzeilen hatte und erst dann Map 4 auftauchte. Ich vermute es liegt daran das ich Readln öfter als 1x aufrufen muss aber leider bin ich mir nicht sicher wie ich das anstellen soll. Wie gesagt zählschleifen führen zu leerzeilen.
  Mit Zitat antworten Zitat