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

Вниз

странное поведение 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.6 MB
Время: 0.057 c
15-1191791670
malyar
2007-10-08 01:14
2007.11.11
как нарисовать линию зная ее угол наклона и длинну


6-1173542908
Эва
2007-03-10 19:08
2007.11.11
Обмен данными между приложениями через IdTCPClient/Server


3-1183366594
GL00m
2007-07-02 12:56
2007.11.11
Delete в SQLQuery не работает


2-1192691195
F@T@L_Err0r
2007-10-18 11:06
2007.11.11
COM1


2-1192180654
Ega23
2007-10-12 13:17
2007.11.11
Как убить объект из его же метода?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский