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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2011, 20:13   #1
rymbek
Новичок
Джуниор
 
Регистрация: 02.05.2011
Сообщений: 2
По умолчанию Ошибка массива

Ошибка такая:
Access violation at address 004E74D6 in module 'antipl.exe'. Read of address 00000000.
Знаю что это связано размером массива, но я сам запутался ))
Мозг вообще перестал работать (или может лень), программа для проверки плагиата в документах.
Проверяет по
абзацу
предложения

тип проверки
один ко одному
один ко многим

http://files.gw.kz/eu0f6ttca0.html
вот полная программа
заранее благодарен
rymbek вне форума Ответить с цитированием
Старый 02.05.2011, 20:43   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Выкладывайте ваш код на форум, заходить на ссылки, данные вами, заходить никто не будет.
Вадим Мошев вне форума Ответить с цитированием
Старый 02.05.2011, 20:51   #3
rymbek
Новичок
Джуниор
 
Регистрация: 02.05.2011
Сообщений: 2
По умолчанию

читает из файла в массив абзацы и предложении
Код:
procedure p(var ff:string);
var f:textfile;
    fl,s:string;
    i,p,j,sln:integer;
begin
  assignfile(f,path+ff);
  reset(f);
  i   :=1;
  sln :=1;
  fl  := '';
    while not (eof(f)) do
      begin
        s :='';
        readln(f,s);
        inc(i);
        if temp[2]='1' then
          begin
            setlength(asl,i);
            setlength(tasl,i);

            asl[i-1] := s;
            p:=1;
            for j:=1 to Length(s) do
              if (s[j]='.') or (j=length(s)) then
                begin
                  inc(sln);
                  setlength(asoy,sln);
                  setlength(tasoy,sln);
                  if not(trim(copy(s,p,(j-p)+1))='') then
                    asoy[sln-1] := copy(s,p,(j-p)+1);
                  p:=j+1;
                end;

          end;
        if temp[2]='2' then
          begin
            setlength(bsl,i);
            setlength(tbsl,i);
            bsl[i-1] := s;
            p:=1;
            for j:=1 to Length(s) do
              if (s[j]='.') or (j=length(s)) then
                begin
                  inc(sln);
                  setlength(bsoy,sln);
                  setlength(tbsoy,sln);
                  if not(trim(copy(s,p,(j-p)+1))='') then
                    bsoy[sln-1] := copy(s,p,(j-p)+1);
                  p:=j+1;
                end;
          end;
        s :=s+'<br />';
        fl := fl + s;
      end;
  closefile(f);
  rewrite(f);
     writeln(f,'<body oncontextmenu="return false;" onselectstart="return false;">');
     writeln(f,fl);
     writeln(f,'</body>');
  closefile(f);

  if copy(temp,2,1)='1' then
    begin
      ai  := i-1;  //к-во абзаца
      asi := sln-1;  //к-во предложении
    end;

  if copy(temp,2,1)='2' then
    begin
      bi:=i-1;  //к-во абзаца
      bsi := sln-1;  //к-во предложении
    end;
end;
проверяет на плагиат предложении
Код:
procedure skbk();
  var i,j,n,sk:integer;

begin
  if asi<bsi then n:=asi else n:=bsi;
  sk:=0;
  for i:=1 to n do
   for j:=1 to n do
    if trim(AnsiUpperCase (bsoy[i]))=trim(AnsiUpperCase (asoy[j])) then
       begin
         if not (trim(asoy[i])='') then inc(sk);
         tasoy[j] := '<span style="background: yellow;">' + asoy[j] + '</span><br>';
         tbsoy[i] := '<span style="background: yellow;">' + bsoy[i] + '</span><br>';
       end
    else
       begin
         Form1.Caption := IntToStr(i);
         if not (tasoy[i][1]='<') then tasoy[i] := asoy[i]+'<br>';
         if not (tbsoy[i][1]='<') then tbsoy[i] := bsoy[i]+'<br>';
       end;
    Form1.sMemo1.Lines.Add(DateTimeToStr(now()));
    Form1.sMemo1.Lines.Add(Form1.sStatusBar1.Panels.Items[0].Text);
    Form1.sMemo1.Lines.Add(Form1.sStatusBar1.Panels.Items[1].Text);
    Form1.sMemo1.Lines.Add('Салыстыру түрі:    сөйлем бойынша');
    Form1.sMemo1.Lines.Add('Салыстыру әдісі:   көпке бір');
    Form1.sMemo1.Lines.Add('Сәйкестіктер саны: '+inttostr(sk));
    Form1.sMemo1.Lines.Add('_________________________________');
    Form1.sMemo1.Lines.Add('');
  sreld(); //перезапись и перезагрузка файла
end;
Код:
procedure sreld();
var f:textfile;
    i:integer;
begin
  assignfile(f,path+'w1.htm');
  rewrite(f);
  writeln(f,'<body oncontextmenu="return false;" onselectstart="return false;">');
    for i:=1 to asi-1 do
      writeln(f,tasoy[i]);
  writeln(f,'</body>');
  closefile(f);
  assignfile(f,path+'w2.htm');
  rewrite(f);
  writeln(f,'<body oncontextmenu="return false;" onselectstart="return false;">');
    for i:=1 to bsi do
      writeln(f,tbsoy[i]);
  writeln(f,'</body>');
  closefile(f);

  form1.w1.Navigate(path+'w1.htm');
  form1.w2.Navigate(path+'w2.htm');
end;
rymbek вне форума Ответить с цитированием
Старый 02.05.2011, 21:39   #4
eduard93
Форумчанин
 
Регистрация: 06.12.2010
Сообщений: 300
По умолчанию

Включите в опциях компилятора все проверки.
eduard93 вне форума Ответить с цитированием
Старый 02.05.2011, 21:41   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Динамические массивы с 0 до н-1
p51x вне форума Ответить с цитированием
Старый 02.05.2011, 22:06   #6
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Я, если требуется пробежаться по всем элементам массива, всегда пишу
Код:
for i:=low(MyArr) to high(MyArr) do
и не заморачиваюсь
_Engine_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интегрирование(ошибка при заполнении массива) Erwin Помощь студентам 0 30.04.2011 17:27
Два одномерных массива A и B. Сформировать два новых массива. Паскаль. Где ошибка в коде? Tomny Помощь студентам 1 27.03.2011 16:47
ошибка в заполнении двумерного массива в файл серг Общие вопросы C/C++ 0 19.02.2010 09:43
ошибка в процедуре сортировки строк массива halfpenny Паскаль, Turbo Pascal, PascalABC.NET 1 17.06.2009 00:36
Ошибка перестановки эл.массива Blad47 Общие вопросы C/C++ 4 13.12.2008 23:58