Autor Beitrag
Moritz M.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: Mo 21.10.02 19:22 
Hi

hab ein kleines Prob:
Wenn ich
ausblenden Quelltext
1:
Server.Socket.Connections[0].Sendtext('hallo');					

und direkt dannach
ausblenden Quelltext
1:
Server.Socket.Connections[0].Sendtext('taschau');					

ausführe, kommt beim client immer "hallotschau" an.
Wie kann ich dass ändern?

cu

Onz
Marduk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Di 22.10.02 08:34 
Weiss auch nicht genau, aber könnte funktionieren indem du nach jedem string einen Zeilenumbruch schickst (glaube das ging mit #13#10)
So hast du die strings dann getrennt
Gruß Dennis
Moritz M. Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: Di 22.10.02 13:43 
Hi

geht leider nur manchmal...

cu

Onz
Moritz M. Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: Di 22.10.02 13:46 
Hi

Geht leider nur manchmal..trotzdem danke

cu

Onz
O'rallY
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 563



BeitragVerfasst: Di 22.10.02 14:05 
Die Idee vom Marduk war gar nicht so schlecht, doch statt des Zeilenumbruchs würde ich #0 vorschlagen, da man dieses Zeichen nicht schreiben kann, nur im Code festlegen. Wenn du dann einen String empfängst prüfst du ihn einfach auf das vorkommen von #0 und kannst dann den String mit folgendem Algi zerlegen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
function GetWordOfString(Text: string; WordPos: Word): string;
var
 p : PChar;
begin
  p := PChar(Text);
  repeat
    Dec(WordPos);
    while p^ <> #0 do
    begin
      if WordPos = 0 then
         Result := Result + p^;
      Inc(p);
    end;
    if WordPos = 0 then Exit;
      Inc(p);
  until p^ = #0;
end;


Anwendung dürfte klar sein:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
s1 := 'hallo' + #0 + 'welt';
s2 := GetWordOfString(s1, 1);
{s2 = 'hallo'}

s2 := GetWordOfString(s1, 2);
{s2 = 'welt'}


Eine andere Methode fällt mir zu Zeit nicht ein, denke aber das dies ne gute Lösung ist.

_________________
.oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
TheLaw
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 25.10.02 20:29 
Hallo,

Hier mal eine Procedure (ungetestet) die einen Doppelnullterminierten string in eine StringList schreibt

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
function StringToList(const AString: string; const AList: TStrings);
var
  P: PChar;
  S: string;
  Len: Integer;
begin
  Assert(Assigned(AList));
  P := PChar(AString);
  while P^ <> #0 do
  begin
    Len := StrLen(P);
    if Len > 0 then 
    begin
      SetLength(S, Len);
      StrLCopy(PChar(S), P, Len);
      AList.Add(S);
    end;
    Inc(P, Len+1);
  end;
end;


Beispiel für einen Aufruf:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
var
  List: TStringList;
  S: string;
  I: Integer;
begin
  S := '1. Eintrag' + #0 + '2.Eintrag' + #0#0; // Wichtig: 2 Nullen am Ende
  List := TStringList.Create;
  try
    StringToList(S, List);
    for I := 0 to List.Count - 1 do
    begin
      // Mach was mit List
    end;
  finally
    List.Free;
  end;
end;


mfg
Th3Law
Moritz M. Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: Sa 26.10.02 07:43 
Hi

Das mit den Codes wären schöne Lösungen. Nurm leider wird jeder String einzeln geschickt, komplett unanhänging und undregelmäßig.
Hagbard Celine
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 119



BeitragVerfasst: Sa 26.10.02 11:35 
Onz hat folgendes geschrieben:
Hi

Das mit den Codes wären schöne Lösungen. Nurm leider wird jeder String einzeln geschickt, komplett unanhänging und undregelmäßig.


Ich kann eurem Problem nicht ganz folgen!

Für jeden String wird doch ein Ereig. ausgelöst und Du kannst jeden gesendeten String einzeln verarbeiten, oder???

Also hängt es Doch an Dir was Du damit machst, wenn Du beide Strings als caption eines Labels hintereinander hängst ist klar das kein Zeilenumbruch kommt!

Wenn Du jeden receivedText mit add in ein Memo schreibst sollte dann jeder String in einer Zeile stehen! Oder hab ich da was falsch verstanden???
Moritz M. Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: Sa 26.10.02 11:37 
Hi

Ja, Ich sende auch jeder String einzeln. Nur geht das irgendwie nicht. Manchmal bekomme Ich einfach den Text aus 2x Senden hintereinander ausgegeben.
Hagbard Celine
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 119



BeitragVerfasst: Sa 26.10.02 11:44 
Onz hat folgendes geschrieben:
Hi

Ja, Ich sende auch jeder String einzeln. Nur geht das irgendwie nicht. Manchmal bekomme Ich einfach den Text aus 2x Senden hintereinander ausgegeben.


Poste mal deine Prozedur die im onRead des Clients steht!