|
#1
|
|||
|
|||
Вот такой глюк
Есть структура
PR = record // Структура массива родителя N: Integer; // Номер I_: Integer; // Вход OU_: Integer; // Выход S_: Integer; // Старт F_: Integer; // Финиш C_: Integer; // Счетчик ссылок end; Массив ContPar = record Tpr: array of PR; // Массив родителей Код RDN_B:=2; integer RDK_A:=1; integer G1.Tpr[RDK_A].OU_:=RDN_B; В после последней строчки в массиве G1.Tpr в строчке 0 появляется данные из строчки 1, а значение RDN_B записывается в строчку 1 как и должно быть, при записи в строчку 2 и далее такого нет Тут скриншот таблицы http://89166974791.webasyst.net/DD/2...B_KEY=QUMxNjQ4 Видно в 0 строке цифры, а записывали в 1 строку, причем только в одну ячейку 1,О = 2. А в строке 0 появились 0,F=5 0,C=1 Как с этим бороться то? Последний раз редактировалось AlexA, 14.12.2012 в 15:01. |
#2
|
||||
|
||||
Цитата:
И где задание размера массива (SetLength)? |
#3
|
|||
|
|||
Размер задан, и его хватает, при записи в любую строчку кроме 1 все ок. Это фрагмент кода
|
#4
|
||||
|
||||
И сколько?
Индексация в дин. массиве идет с нуля. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#5
|
|||
|
|||
Более 3-х. Проблема в том что
RDN_B:=2; integer RDK_A:=2; integer G1.Tpr[RDK_A].OU_:=RDN_B; Даст нормальный результат и в строчке 0 ничего не будет. |
#6
|
||||
|
||||
Цитата:
|
#7
|
|||
|
|||
Добавил скриншот для варианта:
RDN_B:=2; integer RDK_A:=2; integer G1.Tpr[RDK_A].OU_:=RDN_B; |
#8
|
|||
|
|||
В строчку 0 ничего не пишется, мне данные нужны с индекса 1
|
#9
|
||||
|
||||
Цитата:
|
#10
|
|||
|
|||
Как при записи в строку 1, одного значения появляются записи в строке 0? разве это не глюк?))
А проблема в том что и в строке 1 данные меняются, см скриншот (F=5 C=3 стало F=3, C=2), причем даже логики их изменения не возможно понять. И это уже проблема |
#11
|
|||
|
|||
без более обширного куска кода явно сказать что-то не получится.
либо выкладывай минимальный проект. |
#12
|
||||
|
||||
Цитата:
Цитата:
Цитата:
|
#13
|
|||
|
|||
Нет же, я записываю только одно значение в 1,О=2
G1.Tpr[RDK_A].OU_:=RDN_B; (OU_ на форме отображено ка "О") RDK_A=1 RDN_B=2 Получается пишем в 1,О=2 а в массиве появляются: 0,F=5, 0,C=1, 1,O=2 Пишем в 2,О=2 получаем в массиве 2,О=2 Да, все остальное, что в таблице уже было записано в массив. То есть сначала создаем строки массива с данными в колонках S,F,C А эта процедура еще раз идет по массиву и обрабатывает его значения. Долго не мог понять причину ошибки в данных пока не локализовал эту ситуацию. Все свелось к тесту: ставлю RDK_A=1 - глюк, RDK_A=2 все нормально |
#14
|
|||
|
|||
Скриншот кода с двумя вариантами добавил
|
#15
|
||||
|
||||
Цитата:
Цитата:
|