Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.10.09;
Скачать: CL | DM;

Вниз

Ошибка "Access violation" после импортирования кода.   Найти похожие ветки 

 
talim ©   (2011-06-19 11:49) [0]

procedure a1;  
const
 z:string="|\/ ,.#:;?!"-{}()_&<>";
var
 ft,g:boolean;
 b:char;
 s:string ;
 buf:string;
 e,i,j,w,ns,ds,d,bufr:integer;
begin
 ns:=1;
 buf:=".";
 ft:=true;
 g:=true;
 for e:=1 to form1.Memo1.Lines.Count do
   begin
     s:=Form1.Memo1.Lines[e-1];
     d:=length(s);
     s:=s+".";
     for i:=1 to d+1 do
       for j:=1 to 21 do
         if s[i]=z[j] then
           begin
             ds:=i-ns;
             ns:=i+1;
               if ds<>0 then
                 if ft=true then
                   begin
                     w:=i-1;
                     b:=s[w];
                     ft:=false;
                     Form1.ListBox1.Items.Add("Первое слово в тексте заканчивается на букву: ("+b+")");
                   end;
                 if ft=false then
                   begin
                     bufr:=ns-(ds+1);
                     buf:=copy(s,bufr,ds);
                     w:=length(buf);
                     if buf[w]=b then
                       if g=true then
                         begin
                           Form1.ListBox1.Items.Add("В данном тексте на ("+b+") заканчиваются слова:");
                           g:=false;
                           Form1.ListBox1.Items.Add(buf);
                         end
                         else
                         Form1.ListBox1.Items.Add(buf);
                   end;
           end;
   end;
end;


 
talim ©   (2011-06-19 11:55) [1]

Код изначально был написан для Borland Packal (Все действия производились с одной строкой). После импортирования в Delphi 7 потребовалось добавить цикл на чтение строк по-порядку:  for e:=1 to form1.Memo1.Lines.Count do. Ошибка возникает вот здесь if buf[w]=b then. Кто-нить знает в чём может быть проблема? Или в каком направлении копать?


 
Anatoly Podgoretsky ©   (2011-06-19 13:08) [2]

А почему не b1


 
Andy BitOff ©   (2011-06-19 14:27) [3]

Пипец!!! Расстрелять за такой код.
Навеяно собственными пиереживаниями. Сейчас приходится сопровождать проект написанный в током же стиле. Автор его наверняка обикался. Блин, да чтоб он сдох.

зы. Сорри, наболело.


 
Loginov Dmitry ©   (2011-06-19 14:49) [4]


>
> Или в каком направлении копать?


Строки в паскале содержали в нулевом символе длину. Обращение к нулевому байту было нормальной операцией. В Delphi строки string стали "длинными" и теперь обращение к нулевому символу не допускается. Попробуй объявить переменные не string, а ShortString, AV выдаваться перестанет. Но это совершенно не значит, что программа начнет правильно работать. Для этого как минимум нужен программист.
Отладчик тебе в помощь!


> Расстрелять за такой код.


Типичный код первокурсника, которому "седня сдавать нада", а задание препод "выдал только вчера".


 
Loginov Dmitry ©   (2011-06-19 14:53) [5]


> Сейчас приходится сопровождать проект написанный в током
> же стиле.


Да уж, участь незавидная :(
Имхо, лучше всего весь этот говнокод переписать с нуля, иначе разбираться и ловить глюки придется до пенсии. Самое сложное при этом - понять, что он вообще делает.



Страницы: 1 вся ветка

Текущий архив: 2011.10.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.007 c
15-1308594735
картман
2011-06-20 22:32
2011.10.09
продайте/отдайте в хорошие руки


15-1308061241
boriskb
2011-06-14 18:20
2011.10.09
Признавайтесь, кто с ребенком переписывался?


15-1306432866
м0м0к0
2011-05-26 22:01
2011.10.09
MSQL SERVER 2005 + delphi проблема с ADOCONNECTION


3-1264750706
ruslan_as
2010-01-29 10:38
2011.10.09
Кто нибудь имел дело с базой POET (компания POET Software)


1-1268581262
RU-mata
2010-03-14 18:41
2011.10.09
Не срабатываю методы OnClose и OnCloseQuery