Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.04;
Скачать: CL | DM;

Вниз

Создание процедуры в 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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.061 c
2-1148119883
Glex
2006-05-20 14:11
2006.06.04
Как получить имена всех подпапок, находящихся в данной папке?


2-1147957288
Graf
2006-05-18 17:01
2006.06.04
свернуть окно


15-1147449810
vrem
2006-05-12 20:03
2006.06.04
Удивляете ли Вы сами себя? :)


1-1146047997
baks
2006-04-26 14:39
2006.06.04
Помогите Word MailMerge


2-1147937981
Megabyte
2006-05-18 11:39
2006.06.04
Взаимодействие с БД по интернету