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

Вниз

странное поведение StringGrid   Найти похожие ветки 

 
DeadLord ©   (2007-10-08 21:58) [0]

получаю данные для массива:
      begin
      for i:=1to xx do
              for j:=1to yy do
                     w[i,j]:=strtofloat(form2.stringgrid1.Cells[i,j]);  
                      end;

Если запускать по Ф9, то все идет гладко, но большая часть массива заполняется нолями, хотя стринг грид не нулевая вообще. Если попробовать выполнить по шагам, то выпадает access violation и окошко отладчика... в чем дело?!


 
й1   (2007-10-08 22:05) [1]


> strtofloat


 
DeadLord ©   (2007-10-08 22:08) [2]


> > strtofloat


не понял...


 
DeadLord ©   (2007-10-08 22:09) [3]

а, да. стринг грид содержит дробные числа, массив w типа риал


 
Prohodil Mimo ©   (2007-10-08 22:14) [4]

а остальные переменные каких типов?


 
DeadLord ©   (2007-10-08 22:16) [5]


> а остальные переменные каких типов?


которые? i,j,xx,yy- byte.


 
Вася Правильный   (2007-10-08 22:20) [6]


> i,j,xx,yy- byte.

экономишь?

>  стринг грид содержит дробные числа

а десятичныйразделитель учтен?


 
Prohodil Mimo ©   (2007-10-08 22:20) [7]

DeadLord ©   (08.10.07 22:16) [5]
i,j,xx,yy- byte.


так и думал.
а колонок и строк в гриде наверное больше чем 255?


 
Anatoly Podgoretsky ©   (2007-10-08 22:20) [8]

Во первых заменить на Integer, а во вторых разобраться с индексами, где строки и столбцы у массивов и у StringGrid и в третьих если приводишь код, то приводи полностью, а не огрызки.


 
DeadLord ©   (2007-10-08 22:22) [9]


> > i,j,xx,yy- byte.
>экономишь?

а почему бы и нет?

>>  стринг грид содержит дробные числа
>а десятичныйразделитель учтен?

в смысле? запятая стоит. несколько числе нормально распознались, а остальные ячейки нолями забиты:(


 
DeadLord ©   (2007-10-08 22:22) [10]


> так и думал.а колонок и строк в гриде наверное больше чем
> 255?


12х12


 
Prohodil Mimo ©   (2007-10-08 22:24) [11]

DeadLord ©   (08.10.07 22:22) [10]
тогда делай

> в третьих
из [8]


 
Вася Правильный   (2007-10-08 22:25) [12]


> >экономишь?а почему бы и нет?

это самообман
никакой экономии не происходит, все равно хранится как Integer, обрабатывается только медленнее и неуловимых проблем больше

> в смысле? запятая стоит

а в системе? а DecimalSeparator?


 
DeadLord ©   (2007-10-08 22:26) [13]


> Во первых заменить на Integer, а во вторых разобраться с
> индексами, где строки и столбцы у массивов и у StringGrid
> и в третьих если приводишь код, то приводи полностью, а
> не огрызки.

изменил на интеджер- не помогло.
вот процедура целиком:
procedure letsgo;
begin
if perexodim<>true then
       begin
       for i:=1to xx do
               for j:=1to yy do
                      w[i,j]:=strtofloat(form2.stringgrid1.Cells[i,j]);  
                       end;
if nomras=1 then raschet1(w);
if nomras=2 then raschet2(w);
if nomras=3 then raschet3(w);
if nomras=4 then raschet4(w);
if nomras=5 then raschet5(w);
if nomras=6 then raschet6(w);
if nomras=7 then raschet7(w);
if nomras=8 then raschet8(w);
end;


 
Prohodil Mimo ©   (2007-10-08 22:29) [14]

DeadLord ©   (08.10.07 22:26) [13]
из таких зверьков шубы делают :о)


 
Anatoly Podgoretsky ©   (2007-10-08 22:30) [15]

> DeadLord  (08.10.2007 22:26:13)  [13]

Опять огрызок, неизвестны типы переменных

perexodim, i, xx, j, yy, w[i,j]

и их начальные значения. Кроме того в какой строке возникает ошибка.


 
DeadLord ©   (2007-10-08 22:33) [16]


> Опять огрызок, неизвестны типы переменныхperexodim, i, xx,
>  j, yy, w[i,j]и их начальные значения. Кроме того в какой
> строке возникает ошибка.


i, xx, j, yy- изменил на интеджер
w[i,j]- TMyArr = array[0..12, 0..15] of double;

начальные значения ноль

ошибка возникает в строке
w[i,j]:=strtofloat(form2.stringgrid1.Cells[i,j]);


 
Prohodil Mimo ©   (2007-10-08 22:35) [17]

нет процедуры заполнения грида
нет процедур типа raschet1..8
нет той процедуры, при помощи которой ты узнаёшь, что числа потерялись

Вася Правильный   (08.10.07 22:25) [12]
а в системе? а DecimalSeparator?


если бы была в этом причина, он бы получал не АВ, а значение ххх не флоат.


 
Anatoly Podgoretsky ©   (2007-10-08 22:36) [18]


> начальные значения ноль
>
> ошибка возникает в строке
> w[i,j]:=strtofloat(form2.stringgrid1.Cells[i,j]);

Не может, цикл не выполнится ни одного разу.


 
DeadLord ©   (2007-10-08 22:39) [19]


> нет процедуры заполнения грида
>нет процедур типа raschet1..8
> нет той процедуры, при помощи которой ты узнаёшь, что
> числа потерялись


грид заполнен, мне лень каждый рад вбивать 144 значения, как подразумевается по ТЗ

о потеряных значениях узнаю, наведя мышку на переменную массива. Там большая часть значений в начале строки-ноль, последние 2-3 значения- осмысленные

вот описание процедур:
 procedure raschet1(var d: TMyArr);
 procedure raschet2(var d: TMyArr);
 procedure raschet3(var c2: TMyArr);
 procedure raschet4(var a: TMyArr);
 procedure raschet5(var a: TMyArr);
 procedure raschet6(var a: TMyArr);
 procedure raschet7(var a: TMyArr);
 procedure raschet8(var a: TMyArr);


 
Prohodil Mimo ©   (2007-10-08 22:40) [20]

DeadLord ©   (08.10.07 22:33) [16]
если
for i:=1to xx do
for j:=1to yy do

то почему
array[0..12, 0..15]?

так же где xx и yy принимают значения и какие?


 
DeadLord ©   (2007-10-08 22:40) [21]


> Не может, цикл не выполнится ни одного разу.


почему? он очень даже выполняется- по шагам прогнал... Значение переменной perexodim- false


 
DeadLord ©   (2007-10-08 22:42) [22]


> ак же где xx и yy принимают значения и какие?

блин, забыл: эти два числа у меня константы, равные 12. столбцов 15, так как в последствии есть элементы yy+2 и yy+3


 
Anatoly Podgoretsky ©   (2007-10-08 22:43) [23]

> DeadLord  (08.10.2007 22:40:21)  [21]

Цикл for I := 1 to 0 никогда не выполнится, так что лапшу на уши вешаешь.


 
Anatoly Podgoretsky ©   (2007-10-08 22:44) [24]

> DeadLord  (08.10.2007 22:42:22)  [22]

Когда будет полный и правильный код?


 
DeadLord ©   (2007-10-08 22:44) [25]


> Цикл for I := 1 to 0 никогда не выполнится, так что лапшу
> на уши вешаешь.

извини, мой затык >> [22]


 
Prohodil Mimo ©   (2007-10-08 22:45) [26]

DeadLord ©   (08.10.07 22:42) [22]
ты не ответил на первый вопрос.

>если
>for i:=1 to xx do
>for j:=1 to yy do
>то почему
> array[0..12, 0..15]?


 
DeadLord ©   (2007-10-08 22:45) [27]


> Когда будет полный и правильный код?

я его выкладывал уже...
http://delphimaster.net/view/15-1190608909/


 
DeadLord ©   (2007-10-08 22:47) [28]


> ты не ответил на первый вопрос

оО точно... опять косяк:) но это не влияет... просто я определение типа писал отдельно, сегодня, видимо не о том думал:(


 
Anatoly Podgoretsky ©   (2007-10-08 22:49) [29]

> DeadLord  (08.10.2007 22:45:27)  [27]

В указаной ветке кода нет.


 
Prohodil Mimo ©   (2007-10-08 22:53) [30]

DeadLord ©   (08.10.07 22:47) [28]

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

а для начала проверь что будет:

if perexodim<>true then
begin
  for i:=1to xx do
  for j:=1to yy do
     w[i,j]:=strtofloat(form2.stringgrid1.Cells[i,j]);  
  for i:=1to xx do
  for j:=1to yy do
     form2.stringgrid1.Cells[i,j] := FormatFloat("0.00", w[i,j]);
end;
если значения обнулятся, значит что-то не то при чтении, если останутся прежними, ищи косяки в raschet...
хотя не исключено, что значения чутка изменятся в результате конвертаций стринг>>флоат>>стринг


 
Prohodil Mimo ©   (2007-10-08 22:54) [31]

Anatoly Podgoretsky ©   (08.10.07 22:49) [29]
В указаной ветке кода нет.


там есть ссылка на код, который сделал ноги.


 
DeadLord ©   (2007-10-08 22:54) [32]


> В указаной ветке кода нет.

залил http://slil.ru/24953399


 
DeadLord ©   (2007-10-08 22:56) [33]


> если значения обнулятся, значит что-то не то при чтении,
>  если останутся прежними, ищи косяки в raschet...хотя не
> исключено, что значения чутка изменятся в результате конвертаций
> стринг>>флоат>>стринг

хм... остались прежними... значит где то косяк, пошел искать:(


 
Anatoly Podgoretsky ©   (2007-10-08 22:57) [34]

> Prohodil Mimo  (08.10.2007 22:54:31)  [31]

Еще не хватало бегать по Интернет за кодом.


 
DeadLord ©   (2007-10-08 23:01) [35]

=))))))))))))))))))))


 
Prohodil Mimo ©   (2007-10-08 23:04) [36]

Anatoly Podgoretsky ©   (08.10.07 22:57) [34]
будь я тем кодом, я бы тоже прятался :о)


 
Anatoly Podgoretsky ©   (2007-10-08 23:06) [37]

> Prohodil Mimo  (08.10.2007 23:04:36)  [36]

Это как минимум не уважение к форуму, посылать за 20 строчками кода неизвестно куда то в Интернет.


 
Anatoly Podgoretsky ©   (2007-10-08 23:07) [38]

И вместо него постоянно приводить какие то огрызки.


 
vasIZmax ©   (2007-10-08 23:07) [39]

))))))))))))))))
плачу и бьюсь об стол
ребят, скачайте))))

Unit2, 483 строка))))))))) а он, далеко пойдет)))))


 
DeadLord ©   (2007-10-08 23:07) [40]


> Это как минимум не уважение к форуму, посылать за 20 строчками
> кода неизвестно куда то в Интернет.

их там 452....


 
DeadLord ©   (2007-10-08 23:08) [41]


> vasIZmax ©   (08.10.07 23:07) [39]
> ))))))))))))))))плачу и бьюсь об столребят, скачайте))))Unit2,
>  483 строка))))))))) а он, далеко пойдет)))))

не смешно:( может тебе этот же код на бейсике показать?????


 
Anatoly Podgoretsky ©   (2007-10-08 23:09) [42]

> DeadLord  (08.10.2007 23:07:40)  [40]

А это вообще наглость, приводить надо не всю помойку, а только код относящийся к проблеме и ничего лишнего. Никто в этой помойке рыться не будет.


 
DeadLord ©   (2007-10-08 23:09) [43]


> DeadLord ©   (08.10.07 23:07) [40]
> > Это как минимум не уважение к форуму, посылать за 20 строчками
> > кода неизвестно куда то в Интернет.их там 452....

ой...
655


 
DeadLord ©   (2007-10-08 23:10) [44]


> Anatoly Podgoretsky ©   (08.10.07 23:09) [42]
> > DeadLord  (08.10.2007 23:07:40)  [40]А это вообще наглость,
>  приводить надо не всю помойку, а только код относящийся
> к проблеме и ничего лишнего. Никто в этой помойке рыться
> не будет.

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


 
Prohodil Mimo ©   (2007-10-08 23:10) [45]

Anatoly Podgoretsky ©   (08.10.07 23:06) [37]
Это как минимум не уважение к форуму, посылать за 20 строчками кода неизвестно куда то в Интернет


там далеко не 20 строк, там файлик на 19К, одних только функций.


 
Prohodil Mimo ©   (2007-10-08 23:14) [46]

Anatoly Podgoretsky ©   (08.10.07 23:09) [42]
а только код относящийся к проблеме


опять не прав: там всё одна сплошная проблема.

беру лоток для яиц
заполняю его яйцами
бешенно размазываю по всей помойке
открываю лоток
почему там нет яиц?
ребята, помогите вернуть яйца на место в первоначальное состояние.


 
Anatoly Podgoretsky ©   (2007-10-08 23:15) [47]

> DeadLord  (08.10.2007 23:10:44)  [44]

Ты привел никуда не годный огрызок.


 
DeadLord ©   (2007-10-08 23:16) [48]

за сарказм, конечно, спасибо, но у меня был вопрос основной: почему при пошаговом исполнении в строке заполнения массива вылазит аксесс валейшн и отладчик!!!!! я не прошу вычитывать мой код. Если не знаете- так и скажите, я отстану. Процедура, в которой этот код, выполняется первой, поэтому никаких других воздействий на массив нет. За стеб спасибо, чувство юмора я оценил, но исходник этого же на барсике выглядит не лучше...


 
Anatoly Podgoretsky ©   (2007-10-08 23:16) [49]

> Prohodil Mimo  (08.10.2007 23:10:45)  [45]

Даже приведеный в форуме код избыточен, значимых только три строки, к этим строкам нужны еще объявления и инициализация, думаю что 20 строк это даже слишком много.
Кроме того, именно он должен сделать проект из этих 20 строк и отладиться на нем.


 
DeadLord ©   (2007-10-08 23:17) [50]


> Anatoly Podgoretsky ©   (08.10.07 23:15) [47]
> > DeadLord  (08.10.2007 23:10:44)  [44]Ты привел никуда
> не годный огрызок.

я привел кусок кода, в котором у меня ошибка и на который ничто не воздействует


 
Anatoly Podgoretsky ©   (2007-10-08 23:19) [51]

> DeadLord  (08.10.2007 23:17:50)  [50]

И тебя все были вынуждены пытать, что бы получить дополнительную информацию, которую ты так и не привел. Я что то сомневаюсь, что тебе какая либо помощь нужна, ну или по крайней мере ты ее недостоин пока.


 
Prohodil Mimo ©   (2007-10-08 23:21) [52]

DeadLord ©   (08.10.07 23:16) [48]

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

а за 46 не обижайся, обидеть не хотел.


 
DeadLord ©   (2007-10-08 23:23) [53]


> Prohodil Mimo ©   (08.10.07 23:21) [52]

да я и не обижаюсь... просто я уже немного на взводе:(


> Anatoly Podgoretsky ©   (08.10.07 23:19) [51]


вот с этого надо было начинать, извините за беспокойство


 
Prohodil Mimo ©   (2007-10-08 23:24) [54]

и на будущее: если выкладываешь код, то хотя бы без *.~* и *.dcu


 
Anatoly Podgoretsky ©   (2007-10-08 23:27) [55]

> DeadLord  (08.10.2007 23:23:53)  [53]

Все таки обиделся, а надо просто серьезнее отнестись.


 
DeadLord ©   (2007-10-08 23:39) [56]

Все, косяк нашел.
Оказалось, что у меня в одной из процедур массив целиком обнулялся. Решил изменением перехода между процедурами. Аксесс валейшн так и остался, хотя ни на что не влияет...


 
vasIZmax ©   (2007-10-08 23:45) [57]

имхо, путаница у тебя где-то в raschet,
возможно даже в шестом


 
Думкин ©   (2007-10-09 06:26) [58]

> Аксесс валейшн так и остался, хотя ни на что не влияет...

В мемориз.
Работал у меня недавно спец один - трубы варил, котел ставил. Ну, я воду залил - капает. Позвал его - как так? Он чего-то покрутил - капает. Да ничего, говорит - нормально - прогонишь кипяток - затянет, дело житейское, я когда в ЖКХ работал мы часто так - течет и ладно, потом кипятком затянется, а если что - бинт с соляным раствором или горчицу в воду бахни 1 кг.
Я присел - в итоге все сам загерметизировал.


 
boa_kaa ©   (2007-10-09 07:44) [59]


> DeadLord ©
procedure letsgo;
begin
if perexodim<>true then
      begin
      for i:=1to xx do
              for j:=1to yy do
                     w[i,j]:=strtofloat(form2.stringgrid1.Cells[i,j]);  
                      end;
if nomras=1 then raschet1(w);
if nomras=2 then raschet2(w);
if nomras=3 then raschet3(w);
if nomras=4 then raschet4(w);
if nomras=5 then raschet5(w);
if nomras=6 then raschet6(w);
if nomras=7 then raschet7(w);
if nomras=8 then raschet8(w);
end;

Слушай, а ты на самом деле программистом работаешь? Крысата-а-а-а-а!!! 8-0


 
icWasya ©   (2007-10-09 10:56) [60]

в конце процедуры raschet1 есть такой код
for i1:=1 to xx do
       begin
               for j1:=1to yy do
               if (i1<=xx) and (j1<=xx) then d[i1,j1]:=r[i1,j1] else d[i1,j1]:=0;        d[i1,xx+2]:=es[1,i1];      //переносим под матрицу корреляций сумму
       d[i1,xx+3]:=es[2,i1];     //переносим под матрицу корреляции СКО
       end;
после которого половина массива W заполнена нулями


 
Sonia ©   (2007-10-09 12:43) [61]


> Аксесс валейшн так и остался

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



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

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

Наверх




Память: 0.63 MB
Время: 0.02 c
2-1192678623
nick2000
2007-10-18 07:37
2007.11.11
OUT OF MEMORY


5-1162820306
mmms
2006-11-06 16:38
2007.11.11
Возможны ли такой виз. компонент?


8-1168929934
_Dimm
2007-01-16 09:45
2007.11.11
DSPack - PlayCap


2-1192790942
Shakesbeer
2007-10-19 14:49
2007.11.11
Работа с com-портом.


2-1192535102
l_v
2007-10-16 15:45
2007.11.11
структуры большой вложенности