Ładny brzuch

Chce przeslac z servera do cilenta dwie zmienne typu string. Jednak cos mi niewychodzi:

Client:
Label1.Caption := Socket.ReceiveText;
Label2.Caption := Socket.ReceiveText;

Server:
ServerSocket1.Socket.Connections[0].SendText(Zmienna1);
ServerSocket1.Socket.Connections[0].SendText(Zmienna2);

Problem polega na tym ze zostaje wyswietlona tylko "zmienna1".
I jak zrobic zeby te dwie zmienne byly wyswietlane w oddzielnych label'ach ??

Pozdro 4 All.



split
wysylaj string - zmienna1@zmienna2 i rozdzielaj na podstawie znaczka @ lub innego dowolnego ciagu

Bg?...root?..co za rznica??..Bg jest bardziej miosierny..
Leenox or BSD?

Sorki, ale zabardzo niekapuje. Chodzi Ci o takie co:
ServerSocket1.Socket.Connections[0].SendText(Zmienna1@zmienna2);
Jezeli tak to juz probowalem i niedziala [:/]

Masz dwa stringi na serwerze ktore chcesz wyslac do klienta..

wysylasz ciag String1+'@'+String2

kleint to odbiera jako:

blablabla@trelelemorele i wie ze to co przed @ ma dac w edit1 a to co po, to w edit2

Bg?...root?..co za rznica??..Bg jest bardziej miosierny..
Leenox or BSD?



I wszystko jasne, dzieki lofix :)

Sorki, ale jeszczse jedno pytanie ;) OK wysyla 2 zmienne ale ich nierozdzlela, przychodzi takie co:

tekst ze zm1 @ tekst ze zm2

I jak to rozdzieli, aby bylo wyswietlane w oddzielnych labelach ??

uzyj na przyklad funkcji pos i copy:
cytat:var elo:string;
begin
elo:='ala@ola';
Edit1.Text:=copy(elo,0,pos('@',elo)-1);
Edit2.Text:=copy(elo,pos('@',elo)+1,length(elo));
end;

pozdrawiam
pepsi^no1

OK, a jeeli bede chcial tak zrobic z 3 zmienna, to wtedy jak to bedzie wygladac :?

podobnie ;)
znajdujesz 1 malpe funkcja pos, zapisujesz za pomoca funkcji Copy znaki od 0 do pierwszej malpy do swojej zmiennej, znajdujesz 2 malpe, zapisujesz znaki pomiedzy malpami funkcja Copy do drugiej zmiennej i do trzeciej zmiennej zapisujesz znaki od ostatniej malpy do konca ;] tyle opisu slownego, reszte juz powinienes zrobic sam, w koncu to ty chcesz byc programista :chytry: no nie? :]

pozdrawiam
pepsi^no1

Taaa, kombinuje kombinuje i nic ciekawego mi niewychodzi. Wiec jezeli mozesz jeszcze ta 3 linijke doloyc to z reszta juz jakos poradze. Tak chciabym byc programista, lecz najlepiej uczy mi sie na konkternych przykadach. Wiec jezeli to nieproblem, to prosilbym ;)
Pozdro

Moze jednak przykad ;) Tak mi sie lepiej uczyc :D
Pozdrawiam.

procedure TForm1.Button1Click(Sender: TObject); var text:string;    koniec:boolean;    list:TStringList;    i:integer; begin text:='elo@elou :P@aloha :]@wrrr'; list:= TStringList.Create; while (true) do begin  i := pos('@',text);  if (i = 0) then    begin      list.Add(text);      break;    end;  list.Add(copy(text,1,i-1));  delete(text,1,i); end; ListBox1.Items.AddStrings(list); {albo na tych editach} Edit1.Text:=list.Strings[0]; Edit2.Text:=list.Strings[1]; Edit3.Text:=list.Strings[2]; Edit4.Text:=list.Strings[3]; list.Free; end;

pozdrawiam
pepsi^no1

A jeeli wiesz e tekst bdzie mia max ile tam znakw to mona to zrobi te tak:

(w sekji TYPE)
mojrekord = packed record
tekst1 : string[255];
tekst2 : string[255];
end;

// ------

A pniej:

// = wysylanie
var buffer : mojrecord;

buffer.tekst1 := "abc";
buffer.tekst2 := "blbalal";

ServerSocket1.Socket.Connections[0].sendbuf(buffer,sizeof(buffer));

// = odbieranie (oclientsocket.onread)
var buffer : mojrecord;

socket.readbuf(buffer,sizeof(buffer));

//no i tam masz buffer.tekst1 i buffer.tekst2 :D

---------

Wydaje sie skomplikowane ale przy uyciu tego mona budowa rozbudowane programy do wysyania rnych eczy :D

przykad: http://ali240.webpark.pl/programy.htm

pozdro for all :D

m@il: ali88@tlen.pl
GG: 2083160

Wielkie dzieki wszystkim,
forum to wspaniala rzecz :D

Ale si uparlicie na t map... a nie atwiej oddzieli tekst odrazu enterkiem i zrobi tak?

Wysyka:

string1 +#13+ string2;
Odbir:

var  Vars: TStringList; begin  Vars.Text := Socket.RecieveText;  label1.Caption := Vars[0];  label1.Caption := Vars[1];  // itd... end;
Odbir w wersji z map:

var  Vars: TStringList; begin  Vars.Text := StringReplace(Socket.RecieveText, '@', #13, [rfReplaceAll]);  label1.Caption := Vars[0];  label1.Caption := Vars[1];  // itd... end;

http://www.planeta-delphi.com

Sorry walnem z popiechu. Trzeba odbir umieci w:

Vars := TStringList.Create; try  // tu powyszy kod odbierajcy finally  Vars.Free; end;

http://www.planeta-delphi.com

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •