Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Где подвох или правда об Invalid Pointer Operation, возникает ошибка 
V
    Опции темы
Ариец
Дата 25.5.2007, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 20.8.2005

Репутация: -2
Всего: нет



Вобщем вот мой курсяк.... Ещё не полный ибо зашёл в тупик.
Что делает курсяк - хеширует вторую таблицу и затем проходя по первой выдаёт в стрингрид соединённые две таблицы.
В чём тупик: при хешировании элементов первые 14 раз всё идёт гладко, но на 15-ом элементе, при его хешировании почему-то возникакет ошибка "Invalid Pointer Operation" - почему, не знаю. Всю голову уже поломал себе. Может вы что подскажете? Заранее благодарен.

Присоединённый файл ( Кол-во скачиваний: 19 )
Присоединённый файл  kursiak.rar 14,30 Kb
PM MAIL ICQ   Вверх
MetalFan
Дата 25.5.2007, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



ужасный стиль написания и форматирования кода.... читать неудобно и неприятно.
укажи, в какой строке возникает ошибка.
на вскидку: заменить все length(DynArr)-1, и тем более Length(DynArr) на High(DynArr).
понятно, про что я?

Это сообщение отредактировал(а) MetalFan - 25.5.2007, 15:31


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
drkot
Дата 25.5.2007, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



MetalFan, чем тебе стиль не понравился?


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
MetalFan
Дата 25.5.2007, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



например вот этим....
Код

function hashing(quera:string): integer;
var i,j,k,l,l1:integer;
begin
  l:=Length(quera);
  l1:=Length(tbl2);
  j:=0;
  k:=1000;
  for i := 1 to l do
  if i mod 3 = 0
    then begin j := j + ord(quera[i])*k; k:=k div 10; end
    else begin k:=1000; j := j + ord(quera[i])*k; k:=k div 10; end;
    j:= j mod l1;
    if j=0
      then j:=1;
  hashing:=j;
end;

гораздо читабельнее имхо так:
Код

function hashing(quera:string): integer;
var 
  i, j,
  k, 
  l, l1:integer;
begin
  l:=Length(quera);
  l1:=Length(tbl2);
  j:=0;
  k:=1000;
  for i := 1 to l do
    if i mod 3 = 0 then 
    begin 
      j := j + ord(quera[i])*k; 
      k:=k div 10; 
    end
    else 
    begin 
      k:=1000; 
      j := j + ord(quera[i])*k; 
      k:=k div 10; 
    end;
  j:= j mod l1;
  if j=0 then 
    j:=1;
  hashing:=j;
end;



Это сообщение отредактировал(а) MetalFan - 25.5.2007, 15:55


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
drkot
Дата 25.5.2007, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



MetalFan, при всем уважении, для меня твой стиль тоже неудобен  smile (растянуто сильно)
Ужасно (в моем понимании) это вот так:
Код

delete(str[num],1,pos(' Page ',str[num])+15);
delete(str[num],1,pos('of ',str[num])+7);
s:=copy(str[num],1,pos(' ',str[num])-1);
if pos(',',s)>0 then delete(s,pos(',',s),1);
if pos('+',s)>0 then delete(s,length(s),1);
c_urr:=(strtoint(s)div 100)+1;
end;



if not zaa then begin
k:=1;
j:=spinedit1.value;
end else begin
j:=num;
k:=num;
end;

for i:=k to j do begin
if urls.Count=0 then begin
sock[i].Active:=false;
tek[i]:='';
str[i]:='';
zaa:=false;
//goto new_search;
exit;
end;
zaa:=true;
ssilka[i]:=urls.Strings[0];
urls.Delete(0);
sock[i].Active:=false;
tek[i]:='';
str[i]:='';
timer1[i].Enabled:=true;
stat[i]:=5;

end;

//list:=tstringlist.Create;
//list.Text:=str[num];
//list.SaveToFile('ccccc.htm');
//list.Free;
exit;
end else if pos('ResNoResults.aspx',str[num])>0 then begin
  res_no_res:=res_no_res+1;
if res_no_res>=15 then begin
sock[num].Active:=false;
timer1[num].Enabled:=false;
timer[num].Enabled:=false;

tek[num]:='';
str[num]:='';
zaa:=false;
if num=1 then
timer1[num].Enabled:=true;
stat[num]:=0;
//goto new_search;
exit;


end;
if nayd<10 then begin
 ind:=ind-1;
end;
 //b[num].Color:=clfuchsia;
if  t_urr<=c_urr then begin
tek[num]:='';
str[num]:='';
zaa:=false;
//ind:=ind-1;
//goto new_search1;
timer1[num].Enabled:=true;
exit;
end;
if zaa1 then begin
sock[num].Active:=false;
timer1[num].Enabled:=false;
timer[num].Enabled:=false;

tek[num]:='';
str[num]:='';
zaa:=false;
//goto new_search;
exit;

end;

//zaa1:=true;


//sock[num].Active:=false;
//timer1[num].Enabled:=false;
//timer[num].Enabled:=false;

tek[num]:='';
str[num]:='';
zaa:=false;
//goto new_search1;
timer1[num].Enabled:=true;
stat[num]:=2;
 exit;


end else goto ex;

if stat[num]=5 then
if (pos('HTTP/1.0 302',str[num])>0) or (pos('HTTP/1.1 302',str[num])>0) then begin
//if pos('</html>',str[num])=0 then exit;
delete(str[num],1,pos('location:',ansilowercase(str[num]))+9);
ssilka[num]:=copy(str[num],1,pos(#13#10,str[num])-1);
if (pos('http://',ssilka[num])=0)  then ssilka[num]:='http://carer.com'+ssilka[num];
while pos('set-cookie:',ansilowercase(str[num]))>0 do begin

и 3500 строк в такомже стиле.


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
MetalFan
Дата 25.5.2007, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



drkot, растянуто, зато читать приятно) имхо
да, 3500 в этом стиле.. жэсть))) имхо таких "писунов" за программирование вообще пускать нельзя


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Yanis
Дата 25.5.2007, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



drkotMetalFan
Ребят, не хотелось бы отвлекать, но коль уж вы скачали, то помогите парню то smile 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
MetalFan
Дата 25.5.2007, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Yanis, ну я указал на явную ошибку... а отладкой влом как-то заниматься... может там еще какой баг


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Ариец
Дата 27.5.2007, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 20.8.2005

Репутация: -2
Всего: нет



Строка где возникает ошибка:
hashkey:=hashing(tbl2[i].id);
а именно в функции hashing в самомо конце при проходже в 15 раз.

Если вы такие мега культурные кодеры - то должны знать, что у каждого СВОЙ стиль написания. И для МЕНЯ этот стиль удобный, к тому же этот стиль требует науч рук. Поэтому по поводу стиля притензии не принимаются smile Помогите лучше smile
PM MAIL ICQ   Вверх
MetalFan
Дата 27.5.2007, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Цитата(Ариец @  27.5.2007,  00:10 Найти цитируемый пост)
у каждого СВОЙ стиль написания

существует понятие культуры кода. 
если кому-то код свой показываешь, то уж будь добр привести его в читабельный вид ;)
отлаживать и искать ошибки в чужом ужасно оформленном коде... нет уж, я уж лучше своими делами займусь...

Код

procedure HashInit (var hashtable: THashtbl);
var i:integer;
begin
  SetLength(hashtable, Length(tbl2));
  for i:=0 to Length(tbl2) do <- здесь Length заменить на High
    begin
      hashtable[i].used:=false;
      hashtable[i].id:=-1;
    end;
end;


Это сообщение отредактировал(а) MetalFan - 27.5.2007, 00:36


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Ариец
Дата 27.5.2007, 13:22 (ссылка)  | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 20.8.2005

Репутация: -2
Всего: нет



Когда меняю length на High вообще вылетает ошибка о cannot write куда-то там...
Вобщем это не выход.
Чем кстати отличается Length от High если не секрет?

по поводу стиля: если програмист знает своё дело, то он разберётся в ЛЮБОМ коде. Даже если он будет написан в строчку.
Недаром говорят что самая лучшая программа, написанная на Си++ это та, которая написана в одну строчку!
А если вы лишь хотите показать свою аккуратность и понты, извините, подстраиваться под вас не буду. Я лишь попросил помощи.
PM MAIL ICQ   Вверх
aktuba
Дата 27.5.2007, 14:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Ариец, ты немного не прав...

Цитата

если програмист знает своё дело, то он разберётся в ЛЮБОМ коде.


А никто не говорит, что программист не разберется. Тебе говорят, что разбираться в плохо написанном коде тяжело - и это правильно. Да, у каждого свой стиль, но общие правила должны быть... Тебе будет приятно разбираться вот в таком коде:
Код

procedure Etoproceduravydumanadlzprimeraplohogostilzprogrammirovania;
var etoperepennayadlayciklatogepridumanadlaprimeraplohogostilyz, etoperepennayadlayciklatogepridumanadlaprimeraplohogostilya: integer;
begin for etoperepennayadlayciklatogepridumanadlaprimeraplohogostilyz:=1 to 50 do etoperepennayadlayciklatogepridumanadlaprimeraplohogostilya := etoperepennayadlayciklatogepridumanadlaprimeraplohogostilyz + (etoperepennayadlayciklatogepridumanadlaprimeraplohogostilya) * etoperepennayadlayciklatogepridumanadlaprimeraplohogostilyz;


Привер выдуманный, но показывает хорошо, что то, что удобно удному - совершенно не удобно другому. Очень советую почитать книгу "Совершенный код", которая, кстати, обязательна к прочтению в Microsoft. В ней прекрасно описано как надо оформлять код...

Добавлено через 1 минуту и 35 секунд
Цитата

А если вы лишь хотите показать свою аккуратность и понты, извините, подстраиваться под вас не буду. Я лишь попросил помощи. 


Тебе как-раз никто ничего не показывает. Тебя просят оформить так, чтобы было легче разобраться в твоем коде и проще было найти ошибку, о чем ты и просил!


--------------------
user posted image
PM MAIL WWW Skype   Вверх
MetalFan
Дата 27.5.2007, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Цитата(Ариец @  27.5.2007,  13:22 Найти цитируемый пост)
Когда меняю length на High вообще вылетает ошибка о cannot write куда-то там...
Вобщем это не выход.
Чем кстати отличается Length от High если не секрет?

уууу.... вот как у нас тут все запущено... а хелп прочитать - религия не позволяет?
и ошибочку бы не плохо тогда полностью указывать... а не "ну чо-то там куда-то там"...

Цитата(Ариец @  27.5.2007,  13:22 Найти цитируемый пост)
А если вы лишь хотите показать свою аккуратность и понты, извините, подстраиваться под вас не буду. Я лишь попросил помощи.

одно дело, когда в коде надо по своей необходимости разбираться и ПЕРЕДЕЛЫВАТЬ его под себя,
другое - когда просит ПОМОЩИ новис, да еще и с "понтами"...
ну не хочешь элементарную разметку коду сделать - сам свою помойку отлаживай,
раз уж считаешь себя "программистом, знающим свое дело" ;)


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Ариец
Дата 27.5.2007, 16:51 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 20.8.2005

Репутация: -2
Всего: нет



Спасибо всем за помощь. Какие добрые програмисты. Никогда таких не видел.
PM MAIL ICQ   Вверх
aktuba
Дата 27.5.2007, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

Спасибо всем за помощь. Какие добрые програмисты. Никогда таких не видел. 


Да тебе бы и рады помочь, только ты этого не хочешь!


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0909 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.