Форум: "Начинающим";
Текущий архив: 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.5 MB
Время: 0.043 c