Thema: Delphi Daten synchronisieren

Einzelnen Beitrag anzeigen

Crayser

Registriert seit: 26. Dez 2002
9 Beiträge
 
#13
  Alt 26. Feb 2003, 20:45
Hallo zusammen,
mithilfe des debuggers habe ich eine seltsame Sache entdeckt. Und zwar handelt es sich um ein shortstring, den ich nicht editieren kann.

Hier nochmal ein aktuelles Code Fragment:
Code:
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var empfang:string[26];
test:char;

temp,t1:string[5];
t2,t3,t4:string[5];
    j,i,choose:integer;

begin
empfang := ClientSocket1.Socket.ReceiveText; //client empfängt

choose:= strToInt(empfang[1]);

case choose of
..
4: begin
i:=2;

while empfang[i]<>'a' do //info wird von empfang[2] in temp[1]
//gespeichert, dann von empf.[3] in temp[2] usw. bis empfang[i]=a
begin
  temp[i-1]:=empfang[i];
  inc(i);
end;
temp[i]:=#0; //temp wird abgeschlossen..
SchlaegerKopf.Left:=ClientWidth-Schlaeger.Width-strtoint(temp);
//..und verarbeitet
inc(i); //i wird erhöht damit anschliessend empfang[i] nicht a ist
j:=1;

while empfang[i]<>'a' do //gleiche prozedure wird aufs neue durchlaufen
//wobei j wieder von anfang an zählt und i den inhalt aus empfang //durchläuft
begin

  t1[j]:=empfang[i];
  inc(i);
  inc(j);
end;
t1[j]:=#0;

Ball.Top:=ClientHeight-Ball.Height-strtoint(t1);
inc(i);
j:=1;

while empfang[i]<>'a' do
begin

  t2[j]:=empfang[i]; //**HIER IST DER FEHLER**
  inc(i);
  inc(j);
end;
t2[j]:=#0;

Ball.Left:=ClientWidth-Ball.Width-strtoint(t2);
..
end;
end;
Hier nun die Werte, die der Debugger mir ausspuckt, nachdem ich die :
empfang:'4280a400a334a0a-2a'
temp:'280'#0#0'r'#4'º280'#0#0#0#0'º280'#0#0#0#0'º2 80'#0#0'r'#4'º280'#0#0'r'#4'º280'#0#0'r'#4#0'3«'#2 '+'#0#0#0'1400'#0'«r'#4#$1A'¿'#3#0#0#0#0#0#0#0#0#0 #0#0#0#0'´¼·'#4'@'#0#0#0'äþ‘'#5#0#0#0#0#0#0'‘'#5#$ 1E'ù'#0#0#0#0#0#0#0#0#0#0'üŸå'#4'¤så'#4'äþ‘'#5#0#0 #0#0'§*'#1#0#$1C'*å'#4#$1C'¡å'#4'L¥r'#4'´¼·'#4'œš¿ '#4'¬þ‘'#5#$1A'©'#3#0#0#0#0#0'¬®r'#4#$C'*r'#4'¤så' #4'ô'#2#0#0'8…å'#4#0#0#0
t1:'400'#0'«r'#4#$12'4280a400a334a0a-2aÿÿÃ'#$1C'1w_:'#4'º280'#0#0'r'#4'º280'#0#0
t2:''

Wieso gibt es keine Werte in t2? Bedeutet dies, dass t2 nicht in den Stack geladen wird bzw. kein Platz dafür reserviert wird? Wenn ja, was kann ich dann machen?
Dabei ist es egal welche strings ich dafür nutze.. anstatt der 5 strings habe ich auch einen benutzt doch der fehler ist der gleiche.
Ausserdem kriege ich es nicht hin eine setlength anweisung für strings erfolgreich zu compilieren. Mit SetLength(String;strlänge); geht es nicht.
Irgendwelche Ideen?
  Mit Zitat antworten Zitat