Показать сообщение отдельно
Старый 03.02.2011, 06:20   #283
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

егорка, короче надо искать ошибки в моём коде)

Добавлено через 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;

как вообще нужно "резервировать" память?
__________________
Начало.

Последний раз редактировалось supernewbie, 03.02.2011 в 06:20. Причина: Добавлено сообщение
supernewbie вне форума   Ответить с цитированием