Форум: "Основная";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];
ВнизНевыход на точку останова во время отладки!!! Найти похожие ветки
← →
terra0 (2004-06-10 20:09) [0]Много лет программирую на Delphi, но наверное и на старуху бывает проруха.
В одной из своих программ недавно обнаружил глючок - неправильное определение переменной - не суть важно. Открываю проект, в процедуре (открытие hex-файла через OpenFileDialog) ставлю точку останова, запускаю на выполнение - и ничего программа пролетает точку останова, как будто ее нет. Возможно где-то в опциях отладчика или самого проекта, но я вроде все просмотрел - нормально. Даже Delphi переустановил с перепуга - результат тот-же.
Подскажите что делать?!!
← →
lena19 (2004-06-10 20:22) [1]поставить больше точек останова
настройки дельфи мона проверить простой прогой чем проще тем лучше
← →
terra0 (2004-06-10 20:25) [2]пробовал, хоть 5 штук, в простых прогах все нормально - хоть головой о стенку
← →
Petr V. Abramov © (2004-06-10 20:25) [3]Строку мог выкинуть оптимайзер - то есть просто не сгенерить для нее код
← →
terra0 (2004-06-10 20:34) [4]дело в том что я пробовал ставить на другие строки в теле функции - бесполезно!!! Вот кусок кода
procedure TFormMain.SpeedButtonOpenClick(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
case OpenDialog1.FilterIndex of
1: OpenHexFile(OpenDialog1.FileName);
2: OpenBinFile(OpenDialog1.FileName);
end;
end;
end;
function TFormMain.OpenHexFile(fName:string):Boolean;
var
a,b,btc,adr:Integer;
Memory:TMemoryStream;
str,stp:Boolean;
begin
ClearBuff;
StartTime:=Time;
Memory := TMemoryStream.Create;
try
Memory.LoadFromFile(fName);
Memory.ReadBuffer(pBuff,Memory.Size);
finally
Memory.Free;
end;
a:=0;
str:=false;
stp:=false;
while a<Length(pBuff) do
begin
if pBuff[a]=ord(":") then
begin
btc:=StrToInt("$"+chr(pBuff[a+1])+chr(pBuff[a+2]));
adr:=StrToInt("$"+chr(pBuff[a+3])+chr(pBuff[a+4])+chr(pBuff[a+5])+chr(pBuff[a+6]));
if adr=0 then str:=true;
if str then
begin
if (StrToInt("$"+chr(pBuff[a+7])+chr(pBuff[a+8])))=1 then stp:=true;
if not(stp)then BuffLen:=adr+btc;
for b:=0 to btc-1 do Buff[adr+b]:=StrToInt("$"+chr(pBuff[a+9+(b*2)])+chr(pBuff[a+9+(b*2)+1]));
end;
end;
inc(a);
end;
ShowBuff;
ShowKey(1);
EditLAdr.Text:=IntToHex(BuffLen-1,6);
StopTime:=Time;
EditTime.Text:=TimeToStr(StopTime-StartTime);
result:=true;
end;//*
Ставлю в OpenHexFile (в любом месте) - бесполезно!!!
Хотя в теле функции ClearBuff - пожалуйста. Не знаю что делать.
← →
Petr V. Abramov © (2004-06-10 21:19) [5]А это все не в DLL случайно происходит?
← →
pasha_golub © (2004-06-10 22:09) [6]Уважаемый друг, бывает, что чужие компоненты изменяют кой-чего...
Короче, попробуйте вот что,
в начале проекта либо в начале модуля, проставте такие директивы:
{$D+} {$L+}
ЗЫ Я так делаю постояннно, но однако не знаю, какой именно компонент "облегчил" мне жизнь. Удачи :-)
← →
RealRascal © (2004-06-10 22:54) [7]проверьте, действительно ли выполнение алгоритма проходит через эту точку. Например, с помощью Showmessage()
← →
Profi © (2004-06-10 23:17) [8]Чтобы delphi понял точку, нужно запускать компилятор F4, а не F9!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.033 c