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?