Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2012.06.03;
Скачать: [xml.tar.bz2];

Вниз

Проблема с записью теипа Record   Найти похожие ветки 

 
Wadimka   (2012-01-26 07:47) [0]

Есть в программе куча записей record большинство из них это в последствии динамические массивы, а теперь проблема не могу понять почему,
создаю новый record в нем всего 6 полей типа Integer и Extended.
Программа компилится, но сразу вылетает по acces (данная запись рекорд только объявлена в type и в коде нигде не используется)
Если заремить это объявление, все работает
Какие есть вообще ограничения на эти структуры?
или как лечить?


 
MBo ©   (2012-01-26 08:04) [1]

ошибка в другом месте


 
Wadimka   (2012-01-26 08:06) [2]

По сути добавляю новое объявление
type
TDataKefFromMarket=record
    BackKef,
    BackSum:Extended;
    LayKef,
    LaySum:Extended;
    IDSelection:integer;
end;

type
TDataMarketKefAll=record
    IDMarket:integer;
    IDNumInMarket1:integer;
    IDNumInMarket2:integer;
    DataKefFromMarket:array of TDataKefFromMarket;
end;
Прога вылетает сразу при старте с ошибкой Access violation at address 00401F9A in mudule project1.exe. Write of address 00000002

Еще раз повторю, с этим рекорд ничего еще не делаю, даже в var не объявлен.


 
sniknik ©   (2012-01-26 08:08) [3]

возможно имя типа перекрывает где-то используемое такое же, и так
> большинство из них это в последствии динамические массивы
то из-за разности размеров "влазишь" данными в код.

ошибка в 17й строке в общем.


 
Wadimka   (2012-01-26 08:09) [4]

Все структуры были оформлены в одном файле variable.pas
сейчас эту структуру перенес в основной файл с формой1
тут запускается.

Есть какие-то ограничения что-ли?
В проекте примерно структур 30


 
sniknik ©   (2012-01-26 08:10) [5]

> Еще раз повторю, с этим рекорд ничего еще не делаю, даже в var не объявлен.
новый проект, добавь в него, и ничего более. вылетает? пиши рейс.


 
MBo ©   (2012-01-26 08:10) [6]

объявление ни при чём.
Write of address 00000002 - где-то пишешь в не свою память.


 
sniknik ©   (2012-01-26 08:11) [7]

> Есть какие-то ограничения что-ли?
только ламерство при использовании. не там, не так.


 
Wadimka   (2012-01-26 08:12) [8]

Поменял полностью названия типов, эффект тот-же


 
Wadimka   (2012-01-26 08:16) [9]

>>>новый проект, добавь в него, и ничего более. вылетает? пиши рейс.

Даже в этом проекте объявление его в другом unitе к ошибке не приводит


 
Wadimka   (2012-01-26 08:20) [10]

Почему приводит именно в том файле, где объявлены все типы?


 
sniknik ©   (2012-01-26 08:21) [11]

> Даже в этом проекте объявление его в другом unitе к ошибке не приводит
т.е. все ок с этим объявлением, т.е. в [2] ты привел возможно единственно правильный кусочек модуля и хочешь чтобы нашли по нему глюк в остальном?

ищи где потерял, а не где светлее.


 
Wadimka   (2012-01-26 08:25) [12]

Да там килобайт на 20 писанины.
Вот так вылетает
type
LKopmmn=record
     Hjk:integer;
end;

type
HProbaGhj=record
     IDMarket:integer;
     IDNumDim1,
     IDNumDim2:integer;
     KDLoadNN:array of LKopmmn;
end;

А вот так не вылетает!!!!!!!!!!!
type
LKopmmn=record
     Hjk:integer;
end;

type
HProbaGhj=record
     IDMarket:integer;
     IDNumDim1,
     IDNumDim2:integer;
     //KDLoadNN:array of LKopmmn;
end;


 
Wadimka   (2012-01-26 08:26) [13]

Еще раз напомню, этот код только объявлен в type
больше никаким боком к проге не используется


 
Slym ©   (2012-01-26 09:37) [14]

Wadimka   (26.01.12 8:25) [12]
LKopmmn=record
    Hjk:integer;
end;

я фшоке...
не проще type LKopmmn = integer;


 
sniknik ©   (2012-01-26 09:38) [15]

>  этот код только объявлен в type
тогда "комментарить" для проверки нужно так -

> А вот так не вылетает!!!!!!!!!!!
type
{LKopmmn=record
    Hjk:integer;
end;

type
HProbaGhj=record
    IDMarket:integer;
    IDNumDim1,
    IDNumDim2:integer;
    KDLoadNN:array of LKopmmn;
end;}


вот это будет показатель, что не используется, а иначе используется.


 
MacroDenS ©   (2012-01-26 10:40) [16]

попробуй еще память компа проверить


 
Сергей М. ©   (2012-01-26 10:47) [17]

а 17-я строка с ошибкой лежит по адресу 00401F9A


 
Wadimka   (2012-01-26 10:48) [18]

>>не проще type LKopmmn = integer;
Там будет много записей, я 1 элемент только оставил, все равно глюк

А вот так не вылетает!!!!!!!!!!!
type
LKopmmn=record
    Hjk:integer;
end;

type
HProbaGhj=record
    IDMarket:integer;
    IDNumDim1,
    IDNumDim2:integer;
    //KDLoadNN:array of LKopmmn;
end;

Я же и пишу, если закомментить то что выше, то не вылетает


 
Wadimka   (2012-01-26 10:49) [19]

>>>а 17-я строка с ошибкой лежит по адресу 00401F9A

17 строка в том юните?


 
sniknik ©   (2012-01-26 10:53) [20]

> Я же и пишу, если закомментить то что выше, то не вылетает
не выше, а ВСЕ. все коментарить нужно, где есть использование, иначе структура/размер меняется, где-то вылезает за пределы... AV.

скопируй из [15] полностью, и замени свое, если не видишь разницы, там и у "Я же и пишу" (а код/комментарий показываешь другой).


 
RWolf ©   (2012-01-26 10:53) [21]


> Прога вылетает сразу при старте с ошибкой

включить отладчик, найти строку, в которой вылетает.
в чём затруднение-то?


 
Сергей М. ©   (2012-01-26 10:54) [22]


> Wadimka   (26.01.12 10:49) [19]


Search -> Find error ..


 
sniknik ©   (2012-01-26 10:58) [23]

ты похоже считаешь, раз нет обращения то это и не использование...

но вот это -  KDLoadNN:array of LKopmmn; уже использование, если используется структура HProbaGhj в которой оно написано.
не использование, это если вместе с внутренностью не использовать и общее. т.е. тут HProbaGhj.


 
sniknik ©   (2012-01-26 10:59) [24]

> Search -> Find error ..
явного он там ничего не найдет, а связи, почему именно тут, не поймет. ИМХО.


 
Inovet ©   (2012-01-26 11:54) [25]

> [19] Wadimka   (26.01.12 10:49)
> 17 строка в том юните?

Так говорят, когда автор не приводит код в котором ошибка. Читай "ошибка неизвестно где, в другом месте", о чём тебе уже и сказали много раз, но ты игнорировал.


 
Плохиш ©   (2012-01-26 12:09) [26]


>  RWolf ©   (26.01.12 10:53) [21]
> включить отладчик

Ну ты как маленький прям. Всем же известно, что отладчики, как и документации для полных лохов.


 
Германн ©   (2012-01-26 12:40) [27]


> Программа компилится, но сразу вылетает по acces

Везет же некоторым. Какая-то фигня позволила обнаружить наличие неверной работы с памятью в программе ещё на этапе разработки.


 
Wadimka   (2012-01-26 19:15) [28]

т.е. вы хотите сказать, что где-то в других страктурах при их заполнении выходит за пределы своих массивов,  а эта новая структура на нее залазиет?


 
Inovet ©   (2012-01-26 19:19) [29]

> [28] Wadimka   (26.01.12 19:15)
> что где-то в других страктурах при их заполнении выходит
> за пределы своих массивов,  а эта новая структура на нее
> залазиет?

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


 
sniknik ©   (2012-01-26 19:30) [30]

> т.е. вы хотите сказать, что
у тебя ошибка в программе... все остальное домыслы и предположения. и уж точно никто, не видя кода, не станет говорить что, у тебя там, на что "залазиет".


 
Wadimka   (2012-01-26 19:59) [31]

да код бестолку скидывать, если так то там оклоло 30 массивов и 7 поток их обрабатывают, буду искать


 
Anatoly Podgoretsky ©   (2012-01-26 21:30) [32]

> Wadimka  (26.01.2012 19:59:31)  [31]

А включить проверку границ тоже без толку?


 
Wadimka   (2012-01-26 21:31) [33]

>>>А включить проверку границ тоже без толку?

а вот тут поподробнее, как и где ее включить?


 
Anatoly Podgoretsky ©   (2012-01-26 21:38) [34]

В настройках компилятора


 
Wadimka   (2012-01-28 22:36) [35]

Нихрена при Range checking не вылетает


 
Inovet ©   (2012-01-28 22:57) [36]

> [35] Wadimka   (28.01.12 22:36)
> Нихрена при Range checking не вылетает

Не повезло значит. Лучше бы вылетало.


 
Wadimka   (2012-01-29 00:28) [37]

Нашел шо за нахер!!!!!!!!!
благодарю всех за участие
в двух структурах было integer, а числа приходили Int64


 
Германн ©   (2012-01-29 01:27) [38]


> а числа приходили Int64

Так теперь ещё выясняется, что твоя программа получает некие данные от хрензнает какого внешнего устройства по хрензнает какому протоколу. Так я тебе скажу милчеловек Вадимка. Тебе не просто повезло. Тебе сказочно повезло, что "какая-то фигня привела к AV ещё на этапе отладки"! Иначе...
Тут кучу вариантов можно себе представить. Программа могла десятки лет работать "без ошибок", но постоянно выдавать неверные результаты. Причём "плавающе" неверные. Бухгалтерия регулярно была бы на нервах и срывалась бы на лентяев IT-шников. IT-шники срывались бы на дураков бухгалтеров. И т.д. и т.п.
А всё потому, что была в программе неверная работа с памятью, которую невозможно заметить пока не такая работа не привела к обращению к памяти, которая данному процессу не принадлежит!


 
Wadimka   (2012-01-29 02:07) [39]

ну да, я же писал
>> [31] да код бестолку скидывать, если так то там оклоло 30 массивов и 7 поток их обрабатывают, буду искать


 
Германн ©   (2012-01-29 02:38) [40]


> Wadimka   (29.01.12 02:07) [39]
>
> ну да, я же писал
> >> [31] да код бестолку скидывать, если так то там оклоло
> 30 массивов и 7 поток их обрабатывают, буду искать

Искать тебе и искать! Не будь к ночи сказано! :)
И опять почему-то вспоминается Фобос-Грунт. :(


 
Wadimka   (2012-01-29 03:15) [41]

да нашел уже, всем спс


 
Anatoly Podgoretsky ©   (2012-01-29 12:03) [42]

> Германн  (29.01.2012 02:38:40)  [40]

Вот в грунте и искать



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

Форум: "Начинающим";
Текущий архив: 2012.06.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.004 c
15-1327780944
wl
2012-01-29 00:02
2012.06.03
фарма


2-1327746260
Festil
2012-01-28 14:24
2012.06.03
Динамические TButton, определение нажатия.


1-1294084277
TStas
2011-01-03 22:51
2012.06.03
Как получить размер экрана в дюймах или см?


15-1327515561
Псарь
2012-01-25 22:19
2012.06.03
Цикл AS3 -> Delphi цикл.


15-1328292260
Антоха_М
2012-02-03 22:04
2012.06.03
Принцип работы БД





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский