Ł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
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