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

Вниз

Создание процедуры в Delphi7   Найти похожие ветки 

 
Sapan ©   (2006-05-17 19:10) [0]

Здравствуйте, подскажите как создать процедуру в Delphi7 пожалуйста.


 
Ega23 ©   (2006-05-17 19:11) [1]

пожалуйста:

procedure MyProc;
begin

end;


 
Sapan ©   (2006-05-17 19:13) [2]

Ее еще надо обьявить, когда я пробовал, он вывел мне ошибку...


 
Ega23 ©   (2006-05-17 19:16) [3]

procedure MyProc;
begin

end;


 
Джо ©   (2006-05-17 19:20) [4]

Ну, чтобы лучше запомнилось, еще раз:
procedure MyProc;
begin

end;

:)


 
Virgo_Style ©   (2006-05-17 19:26) [5]

следующий вопрос будет "а что в ней писать?", чует мое сердце


 
Sapan ©   (2006-05-17 19:27) [6]

он пишет Project Eng1.exe raised exception class EAccessViolation with message "Access Violation at address 004AD4834 in module "Eng1.exe" Read of address 00000258".

Process stopped.  Use Step or Run to continue.

Это происходит когда я пытаюсь запустить 1 процедуру в другой.


 
Sapan ©   (2006-05-17 19:28) [7]

:)


 
Virgo_Style ©   (2006-05-17 19:33) [8]

По предоставленным тобой данным можно сделать предположение, что в программе у тебя имеется по крайней мере одна ошибка. Не более.
Намек ясен? %-)


 
Kolan ©   (2006-05-17 19:34) [9]

Если это метод. Например формы:
TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
   procedure MyProc;
 end;


То нажми Ctrl+Shift+C и получишь:
procedure TForm1.FormCreate(Sender: TObject);
begin

end;


 
Sapan ©   (2006-05-17 19:36) [10]

То что ошибка я знаю, когда я написал программу без создания своей процедуры, все работало.


 
Ega23 ©   (2006-05-17 19:47) [11]

:)


 
MetalFan ©   (2006-05-17 21:52) [12]

%))) что курил/не курил автор?
такие вопросы в конце рабочего дня могут привести к зависанию мозга %)


 
Kolan ©   (2006-05-17 23:15) [13]

Sapan ©   (17.05.06 19:27) [6]
Отладь и дай код проблемной области + своей процедуры + опеши какой результат ты хотел получить...


 
Джо ©   (2006-05-17 23:32) [14]

> опеши какой результат ты хотел получить...

Какой такой результат ясно было сразу. Сессию сдать :)


 
MetalFan ©   (2006-05-17 23:32) [15]

создать процедуру:
lProcedure = TProcedure.Create;
убить процедуру
lProcedure.Free;

всем спокойной ночи %)


 
Sapan ©   (2006-05-18 16:21) [16]

procedure AllLabels;

begin
  with ADOQuery1 do
     begin
      with SQL do
        begin
         Clear;
          Add("Select Dictat1.Ukey, Dictat1.Eng, Dictat1.Rus, Dictat1.statistic");
          Add("From Dictat1");
          Add("WHERE(UKey = " + inttostr(rand1) + ") OR
(UKey = " + inttostr(rand2) + ") OR (UKey = " + inttostr(rand3) + ") OR
(UKey = " + inttostr(rand4) + ") OR (UKey = " + inttostr(rand5) + ")");
          Open;
          Label1.Caption:=FieldValues["rus"];
          ADOQuery1.Next;
          label2.Caption:=FieldValues["rus"];
          ADOQuery1.Next;
          Label3.Caption:=FieldValues["rus"];
          ADOQuery1.Next;
          Label4.Caption:=FieldValues["rus"];
          ADOQuery1.Next;
          Label5.Caption:=FieldValues["rus"];
          ADOQuery1.First;
          ADOQuery1.MoveBy(randl);
          label6.Caption:=FieldValues["eng"];
          vopros:=FieldValues["rus"];
          Label6.Caption:=pred;
          pred:=FieldValues["eng"];
          open();
        end;
     end;
end;
Вот процедура...
procedure TForm1.Label5Click(Sender: TObject);
begin
if label5.Caption=Vopros then
repeat
begin
repeat
randomize;
rand1:=random(32);
rand2:=random(32);
rand3:=random(32);
rand4:=random(32);
rand5:=random(32);
randl:=random(5);
until (rand1<>rand2)and(rand1<>rand3)and(rand1<>rand4)and(rand1<>rand5)and(rand2<>rand 3)and(rand2<>rand4)and(rand2<>rand5)and(rand3<>rand4)and(rand3<>rand5)and(rand4< >rand5)and(rand1 > 0) and (rand2 > 0) and
(rand3 > 0) and (rand4 > 0) and (rand5 > 0);
 begin
   AllLabels;
    with ADOQuery1 do begin      //Вот здесь он пишет ошибку
     with SQL do begin

    Add("Update Dictat1 SET dictat1.Statistic =  LTrim(Str(Statistic+1))   WHERE (UKey =" + inttostr(rand4) + " )");
     open;
     end;
     end;
     end;
  end
    until
    pred=label6.caption
    else
    with ADOQuery1 do begin
     with SQL do begin
    Add("Update Dictat1 SET dictat1.Statistic =  LTrim(Str(Statistic-1))  
WHERE (UKey =" + inttostr(rand4) + " )");
     open;
     end;
     end;
end;
И сессия тут непричем!


 
Плохиш ©   (2006-05-18 16:38) [17]


> Sapan ©   (18.05.06 16:21) [16]

Мы тут с телепатором посоветовались и решили, что ошибку пишут в

procedure AllLabels;

begin
 with ADOQuery1 do

вот здесь.
Кстати, телепатор поинтересовался, а знаешь ли ты для чего в делфи встроили отладчик?

PS. Также очень настоятельно рекомендую прочитать справку по Open/ExecSQL.


 
ЮЮ ©   (2006-05-19 03:21) [18]

в своей процедуре AllLabels ничего не известно о компонентах формы (published полях класса TFormXXX). Т.к. эта процедура работает исключительно с объектами формы класса TFormXXX и совершенно бессмыслен для формы класса TFormYYY, то логично этот код сделать методом TFormXXX:

TFormXXX = class(TForm)
   Label1: TLabel; // это компоненты, набросанные батонокидателем
   ...
   procedure FormCreate(Sender: TObject); // это обработчики, написанные батонокидателем
   ...
 
 private
 {protected/public} // а в этих секциях пишут настоящие Гуру      
   procedure AllLabels; // а вот это уже метод TFormXXX, который имеет понятие о Label1 и прочик компонентах на форме
 end;


 
ЮЮ ©   (2006-05-19 03:23) [19]

Соответственно, в секции implementation будет так:

procedure TFormXXX.AllLabels;


 
Sapan ©   (2006-05-19 20:11) [20]

Спасибо огромное, теперь все работает.


 
Плохиш ©   (2006-05-20 01:53) [21]


> Sapan ©   (19.05.06 20:11) [20]
> Спасибо огромное, теперь все работает.

Что и вот это тоже работает? 8-O

>     with ADOQuery1 do begin
>      with SQL do begin
>     Add("Update Dictat1 SET dictat1.Statistic =  LTrim(Str(Statistic-
> 1))  
> WHERE (UKey =" + inttostr(rand4) + " )");
>      open;
>      end;


 
TUser ©   (2006-05-20 06:56) [22]

Ну раньше-то компилировалось и даже до ошибки работало, хотя должно было ведь быть ругательство типа Undeclared ... ADOQuery1. Если он компилятор умеет обмануть, то что стоит заставить работать [21] ...


 
Sapan ©   (2006-05-20 19:45) [23]

да, и это тоже...



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.042 c
15-1147252514
psa247
2006-05-10 13:15
2006.06.04
Блокирование компа !


2-1147681226
evg123
2006-05-15 12:20
2006.06.04
Печать DBGrid a


4-1141405482
lis1985
2006-03-03 20:04
2006.06.04
Взаимодействие с чужими окнами


15-1147255965
шурик
2006-05-10 14:12
2006.06.04
где найти спонсора для размещения банера в программе?


9-1131153824
апвапв
2005-11-05 04:23
2006.06.04
opengl+шейдеры





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