Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2009, 19:09   #1
Unconnected
Пользователь
 
Регистрация: 23.06.2008
Сообщений: 55
По умолчанию Invalid Pointer Operation

В последнее время всё чаще беспокоит эта ошибка, причём явных причин для неё я не вижу. Встроенный отладчик(или как он называется) Delphi не показывает на какую-либо строку, а просто выводит ошибку. С чем это может быть связано?
Unconnected вне форума Ответить с цитированием
Старый 21.02.2009, 19:38   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Это происходит на одной вашей программе?
Если да, то придется делать дубликат проекта (изначально пустой!) и постепенно (по одной форме, с обязательной проверкой работоспособности) переносить туда код (желательно попроцедурно).
Сей глюк бывает, он широко известен, но пока никому не удалось однозначно выявить причину.
Лекарство одно - вводить изменения и дополнения в код небольшими порциями и каждое изменение компилить.
(Однажды самому пришлось лечить таким образом мегабайтный код. Было весело )
mihali4 вне форума Ответить с цитированием
Старый 21.02.2009, 19:42   #3
Unconnected
Пользователь
 
Регистрация: 23.06.2008
Сообщений: 55
По умолчанию

Ничего себе.. у меня откомпилированный .exe 760 КБ, это будет очень весело.. Ну я в принципе знаю участок кода(он небольшой), на котором происходит ошибка. Вот:

Код:
Procedure ssendfile;
var fm:TFilestream;
    fm2:TMemoryStream;
begin
  fm:=TFileStream.Create(form7.Edit1.Text, fmOpenRead);
  fm.Position:=0;
  fm2:=TMemoryStream.create;
  fm2.position:=0;
  cipher.initstr(key,tdcp_sha1);
  cipher.EncryptStream(fm,fm2,fm.size);
  cipher.burn;
  form1.ClientSocket1.socket.SendText('#X'+form7.edit1.text+'#0'+inttostr(form1.listbox2.itemindex));
  Try
    fm2.position:=0;
    form1.ClientSocket1.socket.SendText('Size:'+IntToStr(fm2.Size)+ #0);
    form7.StatusBar1.SimpleText:='Выполняется отправка '+inttostr(fm2.size);
    form1.ClientSocket1.Socket.SendStream(fm2);
    form7.edit1.text:='';
    form7.hide;
    fm.free;
    fm2.Free;
    showmessage('Crypt!');
  except
    showmessage('Ошибка!');
end;
end;
Мне кажется, что-то я тут со вторым потоком намудрил, ибо подобная процедура без шифрования (там только один TFileStream) прекрасно работает.
Unconnected вне форума Ответить с цитированием
Старый 21.02.2009, 20:23   #4
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

В одном случае в SendText используется '#0' (с кавычками), а в другом случае просто #0 (без кавычек). Возможно, это как-то влияет.
Jeni вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
handle <> pointer Altera Общие вопросы Delphi 8 08.10.2008 21:11
Invalid floating point operation Skytis Помощь студентам 3 07.05.2008 12:16
Возникает ошибка Invalid floating point operation Иринкаа Помощь студентам 3 29.11.2007 22:10
Invalid pointer operation Димарик Общие вопросы Delphi 2 05.11.2007 09:53
Delphi + dll= Invalid Pointer Operator LEKA Общие вопросы Delphi 4 01.05.2007 23:38