![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Delphi + Excel
indiegod © (2009-12-07 22:22:00)здравствуйте, уважаемые мастера Дельфи!
есть такая проблема: есть таблица в экселе, куда надо вносить данные. в зависимости от определенных параметров значение записывается в определенную ячейку. пока это реализуется довольно громоздко, что-то вроде
if a = 1 then
begin
if b = 1 then
begin
case i of
3: begin
srting1:=excel.range['c3'];
srting2:=excel.range['d3'];
if srting1 = '' then srting1:='0';
if srting2 = '' then srting2:='0';
excel.range['c3']:=inttostr(strtoint(srting1)+1);
excel.range['d3']:=inttostr(strtoint(srting2)+1);
end;
4: begin
srting1:=excel.range['c4'];
srting2:=excel.range['d4'];
if srting1 = '' then srting1:='0';
if srting2 = '' then srting2:='0';
excel.range['c4']:=inttostr(strtoint(srting1)+1);
excel.range['d4']:=inttostr(strtoint(srting2)+1);
end;
.....
так вот возник вопрос. можно ли объявить переменную и ее значения потом подставлять в адрес ячейки?
sniknik (2009-12-09 07:59:00) [1]http://www.delphimaster.ru/cgi-bin/forum.pl?id=1260327565&n=18
sniknik (2009-12-09 07:54:00) [2]> да и не только у меня
клуб ламеров?
> как это обойти?
ошибки исправить.
> или две формы это максимум?
ага, и еще 2 операции максимум, и 2 вызова функции, и 2 переменных, 2 инициализации, 2 присвоения... просто страшно жить становится.
хорошо, что это только для тебя лично, а "мужики не знают".
можно вопрос, с чего ты это решил? объясни ход мысли, очень интересно как ты построил связь. и что было бы если бы была другая ошибка, например деление на ноль, это что будет по твоей логике? запрет на программирование?
indiegod (2009-12-09 07:02:00) [3]еще вопросец возник. да и не только у меня
почему-то в приложении работают с экселем только две формы
все остальные нарываются на invalid variant operation
как это обойти?
или две формы это максимум?
indiegod (2009-12-07 23:52:00) [4]тогда спасибо всем, кто мне помог
KilkennyCat (2009-12-07 23:40:00) [5]угу. так в чем вопрос тогда?
indiegod (2009-12-07 23:37:00) [6]там же есть вид обращения вроде excel.worksheets[n].range или что-то вроде того
KilkennyCat (2009-12-07 23:30:00) [7]или непонятен метод обращения ко второму листу?
KilkennyCat (2009-12-07 23:28:00) [8]
> а как сделать то же самое, но на два?
а из моего ответа разве не видно, что подставлять можно практически что угодно, как угодно, где угодно, и общее выносить в отдельные процедуры? написали для одного листа? прекрасно. то что написали, оберните в отдельную процедуру, одним из параметров будет имя листа и вызывайте ее и для первого и для второго.
Anatoly Podgoretsky (2009-12-07 23:25:00) [9]> indiegod (07.12.2009 22:46:02) [2]
Это хороший и главное правильный ответ.
indiegod (2009-12-07 23:20:00) [10]если код не помог, объясню
я пишу программу подсчета статистики выполнения действий (например, бросков) в течении хоккейного матча
у меня есть две комманды по 20 игроков, представленные двумя группами по 20 кнопок
я нажимаю на кнопку с номером и ставлю плюс или минус в зависимости от результата. этот результат должен быть занесен в таблицу. причем там две таблицы на двух worksheets
я смог сделать запись в ячейку через переменную, только для одного листа. а как сделать то же самое, но на два?
KilkennyCat (2009-12-07 23:05:00) [11]что подробно? про объявление переменной и ее использование? это основы языка. из Вашего кода я ничего не понял. но попытаюсь...
procedure er(var a: string)
begin
if excel.range[a] = '' then if excel.range[a] = '1';
end;
if (a = 1) and (b = 1) then
for i = 3 to 4 step 1 do begin
er('c' + inttostr(i));
er('d' + inttostr(i));
end;
вот так?
indiegod (2009-12-07 22:46:00) [12]
> KilkennyCat © (07.12.09 22:44) [1]
> да
>
>
это хороший ответ, но можно ли подробнее, пожалуйста?
KilkennyCat (2009-12-07 22:44:00) [13]да