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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.11.2011, 22:24
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию поместить код в функцию или в процедуру

подскажите можно ли этот код
Код:
    GetDir(0,s);
    memo2.Text:=Utf8ToAnsi(IdHTTP1.Get('http://xml.weather.co.ua/1.2/forecast/19?dayf=5&userid=yoursite_com'));
    Memo2.Text:=Memo1.Text + Memo2.Text + Memo3.Text ;
    Memo2.Text:=Replace(Memo2.Text,'<?xml version="1.0" encoding="UTF-8"?>','');
    Memo2.Lines.SaveToFile(s+'\1.xml');
    
    XMLDocument1.FileName:='1.xml';
    XMLDocument1.Active := true;
    Memo4.Text:=XMLDocument1.xml.Text ;
     Label8.CAPTION :='ïîãîäà â ' + XMLDocument1.DocumentElement.ChildNodes['city'].ChildNodes['name'].Text + 'å';
     Label9.CAPTION := XMLDocument1.DocumentElement.ChildNodes['current'].ChildNodes['t'].Text+' °Ñ';
     g:= XMLDocument1.DocumentElement.ChildNodes['current'].ChildNodes['pict'].Text;

     
       RxGIFAnimator1.Image.LoadFromFile ('clipart\'+g);
    


     XMLDocument1.Active := false;


как то поместить в функцию или в процедуру чтоб я мог потом её вызывать когда мне это нужно
Ответить с цитированием
  #2  
Старый 07.11.2011, 22:28
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Разве существуют какие-либо ограничения на код помещаемый в процедуры/функции?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 07.11.2011, 23:09
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

Это должно выглядеть так ?
Код:
function Pogoda(s,g: string): string;
   var
     s,g: string;
   begin
    
    GetDir(0,s);
    memo2.Text:=Utf8ToAnsi(IdHTTP1.Get('http://xml.weather.co.ua/1.2/forecast/19?dayf=5&userid=yoursite_com'));
    Memo2.Text:=Memo1.Text + Memo2.Text + Memo3.Text ;
    Memo2.Text:=Replace(Memo2.Text,'<?xml version="1.0" encoding="UTF-8"?>','');
    Memo2.Lines.SaveToFile(s+'\1.xml');
   
    XMLDocument1.FileName:='1.xml';
    XMLDocument1.Active := true;
    Memo4.Text:=XMLDocument1.xml.Text ;
     Label8.CAPTION :='ïîãîäà â ' + XMLDocument1.DocumentElement.ChildNodes['city'].ChildNodes['name'].Text + 'å';
     Label9.CAPTION := XMLDocument1.DocumentElement.ChildNodes['current'].ChildNodes['t'].Text+' °Ñ';
     g:= XMLDocument1.DocumentElement.ChildNodes['current'].ChildNodes['pict'].Text;

    


     XMLDocument1.Active := false;
   end ;
Ответить с цитированием
  #4  
Старый 07.11.2011, 23:30
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Автору конечно виднее, но как ты думаешь, эти переменные не передерутся?
Код:
function Pogoda(s,g: string): string;
   var
     s,g: string;
и второе, а что ты возвращаешь?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #5  
Старый 07.11.2011, 23:33
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

чёт не как не выходит! подскажите как сделать?
Ответить с цитированием
  #6  
Старый 07.11.2011, 23:34
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Что не выходит, что должно получиться?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #7  
Старый 07.11.2011, 23:41
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

мне нужно чтоб этот код делался при загрузке программы а потом потом периодически повторялся. можно конечно переписывать код постоянно но ка кто не удобно.
возвращаю? если я вас правильно понял то скачиваю XML и вывожу значения из него которые меняються
Ответить с цитированием
  #8  
Старый 07.11.2011, 23:47
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Давай по-порядку:
1. имена входных и локальных переменных у тебя одинаковые, для чего?
2. где возвращаемое значение из функции?
3. Периодичность вызова функции и, самостоятельно или по какому-либо событию.
Достаточно?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #9  
Старый 08.11.2011, 00:08
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

1. имена входных и локальных переменных у тебя одинаковые
Да тут я понял наверно нужно просто
Код:
function Pogoda(s,g: string): string;
2. где возвращаемое значение из функции?
Код:
XMLDocument1.DocumentElement.ChildNodes['city'].ChildNodes['name'].Text
  XMLDocument1.DocumentElement.ChildNodes['current'].ChildNodes['t'].Text
   XMLDocument1.DocumentElement.ChildNodes['current'].ChildNodes['pict'].Text;
3. Периодичность вызова функции и, самостоятельно или по какому-либо событию.
по сабытию

и как это всё оформить не пойму
наверно как то так
Код:
function Pogoda(n,t,g: string): string;
begin
    
    GetDir(0,s);
    memo2.Text:=Utf8ToAnsi(IdHTTP1.Get('http://xml.weather.co.ua/1.2/forecast/19?dayf=5&userid=yoursite_com'));
    Memo2.Text:=Memo1.Text + Memo2.Text + Memo3.Text ;
    Memo2.Text:=Replace(Memo2.Text,'<?xml version="1.0" encoding="UTF-8"?>','');
    Memo2.Lines.SaveToFile(s+'\1.xml');
   
    XMLDocument1.FileName:='1.xml';
    XMLDocument1.Active := true;
    Memo4.Text:=XMLDocument1.xml.Text ;
    n :='ïîãîäà â ' + XMLDocument1.DocumentElement.ChildNodes['city'].ChildNodes['name'].Text + 'å';
    t := XMLDocument1.DocumentElement.ChildNodes['current'].ChildNodes['t'].Text+' °Ñ';
     g:= XMLDocument1.DocumentElement.ChildNodes['current'].ChildNodes['pict'].Text;
Ответить с цитированием
  #10  
Старый 08.11.2011, 00:16
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Это не возвращаемое условие, а часть кода:
Код:
XMLDocument1.DocumentElement.ChildNodes['city'].ChildNodes['name'].Text
  XMLDocument1.DocumentElement.ChildNodes['current'].ChildNodes['t'].Text
   XMLDocument1.DocumentElement.ChildNodes['current'].ChildNodes['pict'].Text;
Что такое функция?
Код:
function MyFunc : String;
begin
  SomeCode
  Result := что-то
end;
может достаточно процедуры, всё-равно ничего не возвращаешь. Периодичность, если цикличная, используй таймер. Там же, в таймере, можно проверять некое условие запуска кода, если не цикличная.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #11  
Старый 08.11.2011, 01:02
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

а как сделать процедуру на моём примере и как её вызывать потом?
Ответить с цитированием
  #12  
Старый 08.11.2011, 01:05
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

как то так
Код:
 
procedure TForm1.Pogoda(Sender: TObject);
var
     s,g: string;

begin

  
    GetDir(0,s);
    memo2.Text:=Utf8ToAnsi(IdHTTP1.Get('http://xml.weather.co.ua/1.2/forecast/19?dayf=5&userid=yoursite_com'));
    Memo2.Text:=Memo1.Text + Memo2.Text + Memo3.Text ;
    Memo2.Text:=Replace(Memo2.Text,'<?xml version="1.0" encoding="UTF-8"?>','');
    Memo2.Lines.SaveToFile(s+'\1.xml');
   
    XMLDocument1.FileName:='1.xml';
    XMLDocument1.Active := true;
    Memo4.Text:=XMLDocument1.xml.Text ;
     Label8.CAPTION :='погода в ' + XMLDocument1.DocumentElement.ChildNodes['city'].ChildNodes['name'].Text + 'е';
     Label9.CAPTION := XMLDocument1.DocumentElement.ChildNodes['current'].ChildNodes['t'].Text+' °С';
     g:= XMLDocument1.DocumentElement.ChildNodes['current'].ChildNodes['pict'].Text;


     XMLDocument1.Active := false;
Ответить с цитированием
  #13  
Старый 08.11.2011, 01:11
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Если g, нужно всё-таки вернуть, сделай примерно так:
Код:
function MyFunc(S : String) : String;
begin
  GetDir(0, S);
  memo2.Text := Utf8ToAnsi(IdHTTP1.Get('http://xml.weather.co.ua/1.2/forecast/19?dayf=5&userid=yoursite_com'));
  Memo2.Text := Memo1.Text + Memo2.Text + Memo3.Text ;
  Memo2.Text := Replace(Memo2.Text,'<?xml version="1.0" encoding="UTF-8"?>','');
  Memo2.Lines.SaveToFile(s + '\1.xml');

  XMLDocument1.FileName := '1.xml';
  XMLDocument1.Active := True;
  Memo4.Text := XMLDocument1.xml.Text ;
  Label8.CAPTION := 'погода в ' + XMLDocument1.DocumentElement.ChildNodes['city'].ChildNodes['name'].Text + 'е';
  Label9.CAPTION := XMLDocument1.DocumentElement.ChildNodes['current'].ChildNodes['t'].Text + ' °С';
  Result := XMLDocument1.DocumentElement.ChildNodes['current'].ChildNodes['pict'].Text;
  XMLDocument1.Active := False;
end;
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #14  
Старый 08.11.2011, 01:19
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

мне нужно чтоб весь код проделывался сначала и до конца когда я его вызываю
процедура наверно подойдёт !
я правильно её написал?
и как мне её вызвать ?
Ответить с цитированием
  #15  
Старый 08.11.2011, 01:30
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Gudzik11
мне нужно чтоб весь код проделывался сначала и до конца когда я его вызываю
процедура наверно подойдёт !
я правильно её написал?
и как мне её вызвать ?
1. Весь код и выполнится, при условии, что не возникнет ошибки.
2. Нет неправильно, использована неинициализированная локальная переменная s, локальная переменная g, будет потеряна по выходу из процедуры.
3. где-то в коде:
Код:
  ...
  Pogoda(NIL);
  ...
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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