егорка, короче надо искать ошибки в моём коде)
Добавлено через 8 минут
или может это сервак обгавняканые пакеты шлет?
Добавлено через 34 минуты
да нет, бред всё это... убрал IntToHex, сделал
delphi Код:
procedure Proc;
var
i:integer;
s,s1:string;
j,k:integer;
begin
try
s:='';
k:=FixLog.Add(s);
FixLog.SaveToFile('E:\FixLog.txt');
i:=0;
if PacketsFromServer.Count>0 then
begin
try
with TFullPacketServer(PacketsFromServer.Items[0]) do
begin
try
j:=3;
if id2<>-1 then inc(j,6);
SetLength(s,length(s)+(length(data)*3)+j);
except
MessageBox(0, 'Proc\Memory', '', 0);
end;
try
//s1:=IntToHex(id,2);
s1:='23';
s[1]:=s1[1];
s[2]:=s1[2];
s[3]:=' ';
FixLog[k]:=s;
FixLog.SaveToFile('E:\FixLog.txt');
if id2<>-1 then
begin
//s1:=IntToHex(id2,4);
s1:='4455';
s[4]:=s1[3];
s[5]:=s1[4];
s[6]:=' ';
s[7]:=s1[1];
s[8]:=s1[2];
s[9]:=' ';
FixLog[k]:=s;
FixLog.SaveToFile('E:\FixLog.txt');
end;
if Length(data)>0 then
for i:=0 to length(data)-1 do
begin
//s1:=inttohex(data[i],2);
s1:='12';
//FixLog.SaveToFile('E:\FixLog.txt');
if not FixCheck(s1) then MessageBox(0, 'FATAL ERROR', '', 0);
if (id=$FE) and (i>0) and not FixCheck(s1) then MessageBox(0, PChar(s1), '', 0);
s[j+1]:=s1[1];
s[j+2]:=s1[2];
s[j+3]:=' ';
inc(j,3);
FixLog[k]:=s;
FixLog.SaveToFile('E:\FixLog.txt');
end;
except
MessageBox(0, pchar('Proc\create s; size:'+inttostr(size)+'; i:'+inttostr(i)+' data length:'+inttostr(length(data))), 'ERROR', 0);
end;
try
Writeln('FromServer: size:'+inttostr(size)+': '+s);
except
MessageBox(0, 'Proc\Writeln', 'ERROR', 0);
end;
PacketsFromServer.Delete(0);
end;
except
MessageBox(0, 'Proc', 'ERROR', 0);
Writeln('FromServer:ERROR');
PacketsFromServer.Delete(0);
end;
end;
except
MessageBox(0, 'Proc', 'ERROR', 0);
end;
end;
и всё равно криты, убрал вызов Proc - не критует, так что всё это бред и клиент жмёт память для моих строк или еще че-то, но то что ошибка из-за памяти это 100%
Добавлено через 3 минуты
Цитата:
Сообщение от Yegor
supernewbie, определись на 100 процентов в каком участке кода выдает ошибку, ну не может л2 писать в твою память если ты ее резервируешь, пусть даже методами делфи.
|
что значит резервировать память? может я чего-то не делаю? короче всё, 100% он жмёт память, т.к. щас выдало эксцепт в этом коде
delphi Код:
try
[b][i]SetLength(data1,curpck.size);[/i][/b]
for i:=0 to curpck.size-1 do
begin
p:=Pointer(cardinal(curpck.data)+i);
b:=Byte(p^);
data1[i]:=b;
end;
PacketsFromServer.Add(TFullPacketServer.create(curpck,data1));
except
MessageBox(0, 'ParsingFromServer', 'ERROR', 0);
end;
как вообще нужно "резервировать" память?