hi,
mein Problem ist folgendes:
da der Tclientsocket erst daten/in meinem fall text schickt wenn er genug daten hat kann es dazu kommen, dass einzelne befehe abgeschnitten sind!
deshalb habe ich mir folgendes ausgedacht:
Delphi-Quellcode:
procedure TForm1.ss_serverClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
s_receve,s_temp:
string;
b_da:boolean;
I,i_sockethander: Integer;
begin
i_sockethander:=socket.SocketHandle;
for I := 0
to lv_bots.Items.Count - 1
do
begin
if (lv_bots.Items.Item[i].SubItems.Strings[8]=inttostr(i_sockethander))
then
begin
s_receve:=lv_bots.Items.Item[i].SubItems.Strings[9];
end;
end;
s_receve:=s_receve+Socket.ReceiveText;
repeat
begin
b_da:=false;
//<- break punkt erklärung kommt gleich
s_temp:='
';
for I := 0
to length(s_receve) -1
do
begin
if (s_receve[i]='
|')
then
begin
b_da:=true;
end;
end;
if (b_da=true)
then
begin
s_temp := copy(s_receve, 1, pos('
|', s_receve) - 1);
s_receve := copy(s_receve, pos('
|', s_receve) + 1, length(s_receve));
for I := 0
to lv_bots.Items.Count - 1
do
begin
if (lv_bots.Items.Item[i].SubItems.Strings[8]=inttostr(i_sockethander))
then
begin
lv_bots.Items.Item[i].SubItems.Strings[9]:=s_receve;
end;
end;
if (s_temp<>'
')
then
begin
handle(i_sockethander,s_temp);
end;
end;
end;
until (b_da=false);
end;
nun zu meinem Problem:
die
handle procedure wir nicht ausgelöst! Nur wenn ich entweder einen Brak-Punkt ein an die beschiebene stelle setzte oder ich einen button mit
sleep(3000);
machen (der muss aber mindestens 3 sec haben sonst wird die
handle Procedure nicht ausgelöst)
wie kann ich mienem Problem abhilfe schaffen?
mfg
gandime