Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.10.2011, 18:09
Skainet Skainet вне форума
Прохожий
 
Регистрация: 23.10.2011
Сообщения: 12
Репутация: 10
По умолчанию Помогите вывести переменные

Помогите вывесте переменную в Label2

вот код
Код:
function hddser:string;
var
SerialNum : dword;
a, b : dword;
Buffer  : array [0..255] of char;
begin
if GetVolumeInformation(pchar('c:\'), Buffer, SizeOf(Buffer), @SerialNum, a, b, nil, 0) then
result := IntToStr(SerialNum);
end;
 begin
 if FileExists('c:\1.txt') then
  ShowMessage('Файл c:\1.txt существует')
else
begin
Num:=(hddser);
Label2.Caption:=Num;
y:=5;
z:=2455560128;
x:= strtoint(Num) + z * y;
id:= inttostr(x);
with TStringList.Create do
try
Num:=(hddser);
  Add(id);
  SaveToFile('C:\1.txt');
finally 
  Free;
end;
end;

end.
Админ: Пользуемся тегами для оформления кода!

вот ошибка с лога
[Error] Unit1.pas(45): Undeclared identifier: 'Label2'

надо вывести без процетуры onclick в ходе запуска программы

Последний раз редактировалось Admin, 23.10.2011 в 18:15.
Ответить с цитированием
  #2  
Старый 23.10.2011, 18:21
ChinYan ChinYan вне форума
Тыкаю клавиши
 
Регистрация: 13.07.2009
Сообщения: 804
Версия Delphi:
Репутация: 48633
По умолчанию

Так исходя из ошибки, Label2 у вас не существует. Чтоб он у вас его увидел, обращаться нужно через имя формы - Form1.Label2

А при запуске - в событии onCreate
Ответить с цитированием
  #3  
Старый 23.10.2011, 18:40
Skainet Skainet вне форума
Прохожий
 
Регистрация: 23.10.2011
Сообщения: 12
Репутация: 10
По умолчанию

Благодарю за каректировку я так прописывал тоже ошибка
если можно, то по подробнее о 'onCreate' буду признателен за простецкий пример.
Изображения
Тип файла: jpg 1.JPG (30.3 Кбайт, 11 просмотров)
Ответить с цитированием
  #4  
Старый 23.10.2011, 18:52
ChinYan ChinYan вне форума
Тыкаю клавиши
 
Регистрация: 13.07.2009
Сообщения: 804
Версия Delphi:
Репутация: 48633
По умолчанию

Num у вас что? строка? число? Какое значение?

Выделите форму свою, откройте инспектор объектов, перейдите на вкладку событий (events) найдите OnCreate и создайте обработчик этого события, дважды щелкнув по полю справа
Ответить с цитированием
  #5  
Старый 23.10.2011, 19:02
m1sclick m1sclick вне форума
Начинающий
 
Регистрация: 04.07.2011
Адрес: Украина
Сообщения: 186
Версия Delphi: 2010
Репутация: 2094
По умолчанию

Используй не OnCreate, а OnShow - предположительно на момент создания формы Label2 еще не создан.

Последний раз редактировалось m1sclick, 23.10.2011 в 19:42.
Ответить с цитированием
  #6  
Старый 23.10.2011, 19:10
Skainet Skainet вне форума
Прохожий
 
Регистрация: 23.10.2011
Сообщения: 12
Репутация: 10
По умолчанию

переменная Num integer
сделал процедуру oncreate и вот лог
[Warning] Unit1.pas(48): Constant expression violates subrange bounds
[Error] Unit1.pas(61): Statement expected but 'PROCEDURE' found
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
Ответить с цитированием
  #7  
Старый 23.10.2011, 19:45
m1sclick m1sclick вне форума
Начинающий
 
Регистрация: 04.07.2011
Адрес: Украина
Сообщения: 186
Версия Delphi: 2010
Репутация: 2094
По умолчанию

Кхм.....
Код:
begin
if GetVolumeInformation(pchar('c:\'), Buffer, SizeOf(Buffer), @SerialNum, a, b, nil, 0) then
result := IntToStr(SerialNum);
end;
 begin
 if FileExists('c:\1.txt') then
Это как получается?

Также. А нормально то что:
Num: integer, а result := IntToStr(SerialNum); - тоесть String?
Дальше......
Код:
Label2.Caption:=Num;
x:= strtoint(Num) + z * y;
Насколько я знаю, должен быть тип String у переменной.
И еще
Код:
SerialNum : dword;
|
|
\/
result := IntToStr(SerialNum)
Это нормально?

Ты уверен что:
Цитата:
переменная Num integer

Дальше. Зачем вызываешь:
Код:
with TStringList.Create do
try
Num:=(hddser);
  Add(id);
  SaveToFile('C:\1.txt');
finally 
  Free;
end;
Если Num там дальше нигде не используется.

Касательно
Цитата:
[Warning] Unit1.pas(48): Constant expression violates subrange bounds
В var замени -
Цитата:
Buffer : array [0..255] of char;
на что то по больше.
http://forum.sources.ru/index.php?showtopic=167280 - особенно обрати внимание на Сообщ. #2.

И вообще, зачем нужна функция если у тебя там одна строчка кода, не считая объявления переменных?

Выложи весь код - это значительно упростит разгадывание твоей загадки.

Последний раз редактировалось m1sclick, 23.10.2011 в 20:47.
Ответить с цитированием
  #8  
Старый 24.10.2011, 10:31
Skainet Skainet вне форума
Прохожий
 
Регистрация: 23.10.2011
Сообщения: 12
Репутация: 10
По умолчанию

Благодарю всех за помощь, я вчера прописал OnCreate сразу после функции и туда подвязал оставшийся код и все пошло... а насчет buffer проштудирую.
Ответить с цитированием
  #9  
Старый 24.10.2011, 20:07
Skainet Skainet вне форума
Прохожий
 
Регистрация: 23.10.2011
Сообщения: 12
Репутация: 10
По умолчанию

помогите как можно в конструкция if then else внести обработчик событий кнопки.
Ответить с цитированием
  #10  
Старый 24.10.2011, 20:40
Asmoday74 Asmoday74 вне форума
Прохожий
 
Регистрация: 12.10.2010
Адрес: Челябинск
Сообщения: 22
Версия Delphi: XE2
Репутация: 893
По умолчанию

Если я правильно понимаю твой вопрос, то ты хочешь сделать конструкцию вида:
Код:
if <если по кнопке кликнули> then
begin
//какой-то код
end
else
begin
//какой-то код
end;
А что тебе мешает написать код в обработчике кнопки? Другой вопрос если тебе необходимо определить по какой кнопке кликнули, тут следует использовать значение передаваемое в процедуру обработки события Sender. Например:
Код:
//Обработчик OnClick для кнопки 1 и 2
procedure TForm1.Button2Click(Sender: TObject);
begin
  if (Sender as TButton).Name='Button1' then
    ShowMessage('Вы кликнули по кнопке 1');
  if (Sender as TButton).Name='Button2' then
    ShowMessage('Вы кликнули по кнопке 2');
end;
Ответить с цитированием
  #11  
Старый 25.10.2011, 07:43
Skainet Skainet вне форума
Прохожий
 
Регистрация: 23.10.2011
Сообщения: 12
Репутация: 10
По умолчанию

маленько не то объясню на примере условие если есть c:\1.txt то бла бла бла а вот если его нет то тут после else мне надо сделать действие оно включается если я закрываю конструкцию if then else а это не точто мне нужно да и даже если истина там в одном участке нужено будет вставить подобное действие.
Код:
if FileExists('c:\1.txt')then
begin
//какой-то код
end
else
begin
procedure TForm1.Button1Click(Sender: TObject);
begin
//какой-то код
end;
end;
так сделать возможно?
Ответить с цитированием
  #12  
Старый 25.10.2011, 13:13
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Можно, но только немножко не так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
//какой-то код
end;
...
if FileExists('c:\1.txt')then
begin
//какой-то код
end
else
begin
 Form1.Button1Click(Sender);
end;
...
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #13  
Старый 25.10.2011, 13:22
Asmoday74 Asmoday74 вне форума
Прохожий
 
Регистрация: 12.10.2010
Адрес: Челябинск
Сообщения: 22
Версия Delphi: XE2
Репутация: 893
По умолчанию

Программно нажать на кнопку можно так
Код:
Form1.Button1.Click;
Ответить с цитированием
  #14  
Старый 25.10.2011, 13:37
Skainet Skainet вне форума
Прохожий
 
Регистрация: 23.10.2011
Сообщения: 12
Репутация: 10
По умолчанию

если программно то можно обойтись и без нее просто прописать действия а мне нужно что бы пользователь нажал ее и запустил эти действия.
Ответить с цитированием
  #15  
Старый 25.10.2011, 13:39
Skainet Skainet вне форума
Прохожий
 
Регистрация: 23.10.2011
Сообщения: 12
Репутация: 10
По умолчанию

сейчас попробую
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:33.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025