Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2013, 21:23   #1
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 624
Счастье Присвоение значения label.Caption переменной типа Integer

Подскажите пожалуйста, почему возникает ошибка вот в этой сроке: a:=TryStrToInt(Form1.Label1.Caption ); ?

Код:
  
procedure TForm2.BitBtn1Click(Sender: TObject);
var
a,b,c,rez:integer;
s,e:string;
begin

  Form1.ADOQuery2.Close;
  Form1.ADOQuery2.SQL.Clear;
  Form1.ADOQuery2.SQL.Add('Select SUM(Электроэнегия)  from счет');
  Form1.ADOQuery2.Open;
  Form1.label1.Caption:= Form1.ADOQuery2.Fields[0].AsString;
  a:=TryStrToInt(Form1.Label1.Caption);
  b:=TryStrToInt(DBEdit3.Text);
  rez:=b-a;
  Form1.ADOQuery1.Edit;
  Form1.ADOQuery1.FieldByName('Общее').AsInteger := rez;
  Form1.ADOQuery1.Post;

 end;
end.
Изображения
Тип файла: jpg error.jpg (82.2 Кб, 156 просмотров)

Последний раз редактировалось Stilet; 27.10.2013 в 23:46.
Женя32 вне форума Ответить с цитированием
Старый 27.10.2013, 21:25   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

зачем вам программирование?
eval вне форума Ответить с цитированием
Старый 27.10.2013, 21:29   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Женя32, кроме форума программистов существует еще дельфийская справка. F1 как бы. Неожиданно, правда? Да и внизу скрина уже ответ на ваш вопрос есть
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 27.10.2013 в 21:32.
Аватар вне форума Ответить с цитированием
Старый 27.10.2013, 23:47   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
a:=StrToIntDEF(Form1.Label1.Caption,0);
Или
Код:
if not TryStrToInt(Form1.Label1.Caption,a) then ShowMessage('Неверное число');
Цитата:
Form1.ADOQuery1.Edit;
Form1.ADOQuery1.FieldByName('Общее' ).AsInteger := rez;
Form1.ADOQuery1.Post;
Глазам не верю... Неужели это сработает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.10.2013, 09:10   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Женя32, присоединяюсь к вопросу eval - зачем Вам программирование?!!


После исправления с ошибкой TryStrToInt - (там не хватает параметров),
предполагаю, что код будет компилироваться, но всё равно не заработает...

Кстати, Женя32, Вас не смущает, что кнопка расположена на Form2 (см. Unit2)
а обращение идёт к контролам формы Form1 ?

и ещё. Если Вы меняете значения полей в датасете, то это можно делать только после открытия датасета на редактирования (это Form1.ADOQuery1.Edit; )
у Вас строка
Цитата:
Код:
Form1.ADOQuery1.FieldByName('Дата').AsDateTime := date();
расположена до перевода в режим редактирования, следовательно, сгенерит ошибку при попытке выполнить присвоение...






Цитата:
Сообщение от Stilet
Код:
Form1.ADOQuery1.Edit;
Form1.ADOQuery1.FieldByName('Общее' ).AsInteger := rez;
Form1.ADOQuery1.Post;
Глазам не верю... Неужели это сработает?
теоретически - может и сработать.
например, если в Oracle в датасет выбрать 'select t.*, t.rowid from Table1 t' - то очень даже сработает!
Другое дело у топикстартера. Не думаю, что это сработает!

p.s. Он уже итоги по водоснабжению посчитал, теперь за элекроэнергию принялся.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.10.2013, 12:16   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
например, если в Oracle в датасет выбрать 'select t.*, t.rowid from Table1 t' - то очень даже сработает!
Ну-у-у-у... Это уже чисто магия Оракла
Кстати это не всегда прокатывает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.10.2013, 13:40   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Serge_Bliznykov, eval, за что столько ненависти?
Человек_Борща вне форума Ответить с цитированием
Старый 28.10.2013, 13:48   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

да, кстати, по поводу ошибки с параметрами в TryStrToInt
нужно или использовать StrToIntDEF, как предложил Stilet, либо переписать код в соответствии с:

Цитата:
Код:
function TryStrToInt(const S: string; out Value: Integer): Boolean;
т.е. примерно так:
Код:
  Form1.label1.Caption:= Form1.ADOQuery2.Fields[0].AsString;
  if Not TryStrToInt(Form1.ADOQuery2.Fields[0].AsString, a) then begin
    Application.MessageBox('в Fields[0] не целое число!', 'Ошибка', MB_ICONERROR or MB_OK);
    Exit;
  end;
  if Not TryStrToInt(DBEdit3.Text, b) then begin
    Application.MessageBox('в  DBEdit3 не целое число!', 'Ошибка', MB_ICONERROR or MB_OK);
    Exit;
  end;
  rez:=b-a;


Человек_Борща, где Вы увидели ненависть?! Очень интересно, зачем топикстартеру нужно программирование?!

Последний раз редактировалось Serge_Bliznykov; 28.10.2013 в 13:51.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.10.2013, 14:23   #9
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 624
Счастье

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
a:=StrToIntDEF(Form1.Label1.Caption,0);
Или
Код:
if not TryStrToInt(Form1.Label1.Caption,a) then ShowMessage('Неверное число');

Глазам не верю... Неужели это сработает?

Все отлично работает, Проверено!!!:

Код:
Form1.ADOQuery1.Edit;
Form1.ADOQuery1.FieldByName('Общее' ).AsInteger := rez;
Form1.ADOQuery1.Post;

Но вот только не получается присвоить переменной полученное число в результате выполнения вот этого кода:
PHP код:
  Form1.ADOQuery2.Close;
  
Form1.ADOQuery2.SQL.Clear;
  
Form1.ADOQuery2.SQL.Add('Select SUM(Электроэнергия)  from счет');
  
Form1.ADOQuery2.Open;
  
Form1.label1.Caption:= Form1.ADOQuery2.Fields[0].AsString
Смотрите, если я делаю вот так:
PHP код:
rez:=b-a;// b - хранить число введенное в DBEdit; a - значение label1
  
Form1.ADOQuery1.Edit;
  
Form1.ADOQuery1.FieldByName('Общвода').AsInteger := rez;
  
Form1.ADOQuery1.Post
То в поле 'Общвода' попадает то число, которое было введено в DBEdit(хотя, по замыслу, от этого числа должно отняться то число, которое попадает в labal1).

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

Вот так:
rez:=b-128;

Вопрос, как еще можно попробовать занести в переменную, результат выполнения вот этой строки?:

PHP код:
  Form1.ADOQuery2.SQL.Add('Select SUM(Электроэнергия)  from счет'); 
Женя32 вне форума Ответить с цитированием
Старый 29.10.2013, 14:33   #10
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
[CODE]a:=StrToIntDEF(Form1.Label1.Caption ,0);

Глазам не верю... Неужели это сработает?
Ты про конструкцию?
У меня было несколько подобных рабочих примеров. В дипломе писал приметно так:
Код:
SomeObject.GetElement(n)^.Data:=SomeValue;
А недавно проверял такое
Код:
If copy(<аргументы>)[1] = ...
Тоже работало.
Вадим Мошев вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Присвоение значения ячейки переменной VoSKreS Microsoft Office Excel 1 01.07.2013 18:30
Присвоение переменной значения из массива Maxx Microsoft Office Excel 4 21.07.2010 13:53
Выбор из базы данных значения и присвоение его переменной. vandal123 БД в Delphi 1 20.05.2010 08:15
Присвоение и передача значения переменной из HTML в PHP alexscorp1661 Помощь студентам 1 18.04.2010 11:33
к переменной типа integer присвоить переменную string Kigmatig Помощь студентам 7 29.01.2010 21:55