![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 06.04.2009
Сообщений: 6
|
![]()
Объясните в чем ошибка и как ее исправить...Все упирается в procedure Calc..Фрагменты проги:
........ procedure FileOpen(Sender: TObject); function CheckTable: boolean; procedure DataTableSetEditText(Sender: TObject; ACol, ARow: Longint; const Value: String); end; var MainForm: TMainForm; DrawRect: Trect; DataArray: array [1..3, 1..4] of word; Segments: Array[1..3,1..2] of Real; nTops: Byte; Tops: Array[1..5,1..2] of Real; kXY: Real; kXY1: Real; kXY2: Real; h: Word; dh: Word; Minx,Miny: Real; nMinx,nMiny: Byte; n3:Byte; a1,a2,b1,b2,c1,c2: Real; x,y: Real; implementation {$r *.dfm} ........ procedure TMainForm.FileOpen(Sender: TObject); var f: TextFile; i,j: byte; begin if OpenDialog.Execute then begin { Add code to open OpenDialog.FileName } end; if OpenDialog.Execute then begin AssignFile(f, OpenDialog.Filename); Reset(f); For j:=1 to 4 do begin For i:=1 to 3 do begin Read(f,DataArray[i,j]); DataTable.Cells[i,j]:=IntToStr(DataArray[i,j]); end; readln(f); end; CloseFile(f); Table.PageIndex:=1; end; if CheckTable then Calc;//Здесь выдает ошибку: Undeclared identifier: 'Calc'// ShowLimits; ShowGraph; end; ........ function TMainForm.CheckTable: boolean; var i, j: byte; begin CheckTable:=true; With DataTable do for i:=1 to 3 do for j:=1 to 4 do begin if ((i=3) and (j=4)) then break; if StrToNum(Cells[i,j])=0 then CheckTable:=False; end; end; ......... procedure Calc; Var i,j: Byte; Max1, Max2: Real; begin Max1:=0; Max2:=0; Minx:=MaxInt; Miny:=MaxInt; For i:=1 to 3 do For j:=1 to 2 do begin segments[i,j]:=DataArray[3,i]/DataArray[j,i]; if segments[i,j]>Max1 then Max1:=segments[i,j]; Case j of 1: if segments[i,j]<Minx then begin Minx:=segments[i,j]; nMinx:=i; end; 2: if segments[i,j]<Miny then begin Miny:=segments[i,j]; nMiny:=i; end; End; end; Tops[1,1]:=Minx; Tops[1,2]:=0; Tops[2,2]:=0; Tops[2,2]:=0; Tops[3,2]:=0; Tops[3,2]:=Miny; if nMinx=nMiny then Begin nTops:=3; if Minx>Miny then Max2:=Minx else Max2:=Miny; End else begin a1:=DataArray[1,nMinx]; b1:=DataArray[2,nMinx]; c1:=DataArray[3,nMinx]; a2:=DataArray[1,nMiny]; b2:=DataArray[2,nMiny]; c2:=DataArray[3,nMiny]; x:=(c1*b2-b1*c2)/(a1*b2-b1*a2); y:=(a1*c2-c1*a2)/(a1*b2-b1*a2); n3:=6-nMinx-nMiny; case (DataArray[1,n3]*x+DataArray[2,n3]*y<=DataArray[3,n3]) of True: Begin nTops:=4; Tops[4,1]:=x; Tops[4,2]:=y; End; False:Begin nTops:=5; a1:=DataArray[1,n3]; b1:=DataArray[2,n3]; c1:=DataArray[3,n3]; a2:=DataArray[1,nMiny]; b2:=DataArray[2,nMiny]; c2:=DataArray[3,nMiny]; x:=(c1*b2-b1*c2)/(a1*b2-b1*a2); y:=(a1*c2-c1*a2)/(a1*b2-b1*a2); Tops[4,1]:=x; Tops[4,2]:=y; a1:=DataArray[1,n3]; b1:=DataArray[2,n3]; c1:=DataArray[3,n3]; a2:=DataArray[1,nMinx]; b2:=DataArray[2,nMinx]; c2:=DataArray[3,nMinx]; x:=(c1*b2-b1*c2)/(a1*b2-b1*a2); y:=(a1*c2-c1*a2)/(a1*b2-b1*a2); Tops[5,1]:=x; Tops[5,2]:=y; End; End; end; For i:=1 to nTops do For j:=1 to 2 do if Tops[i,j]>Max2 then Max2:=Tops[i,j]; kXY1:=190/Max1; kXY2:=190/Max2; case MainForm.RadioGroup1.ItemIndex of 0: kXY:=kXY1; 1: kXY:=kXY2; End; i:=DataArray[1,4]; j:=DataArray[2,4]; { dh = НОД(i,j) } while ((i<>0) And (j<>0)) do if i>j then i:= i mod j else j:=j mod i; dh:=i+j; if Minx>Miny then h := Round(Minx)*DataArray[1,4] else h := Round(Miny)*DataArray[2,4]; h:=h-dh; end; ........ procedure TMainForm.DataTableSetEditText(Send er: TObject; ACol, ARow: Longint; const Value: String); begin if (ACol=3) and (ARow=4) then DataTable.Cells[3,4]:='0'; DataArray[ACol,ARow]:=StrToNum(Value); if CheckTable then Calc; ShowLimits; ShowGraph; end; end. А если объявить procedure Calc; то выдает ошибку Unsatisfied forward or external declaration: 'TMainForm.Calc' В чем дело??? |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 29.01.2008
Сообщений: 1,039
|
![]()
Компилятор сообщает, что указанная процедура/функция/метод не имеет определения. То есть, нигде не найдена ее реализация.
Google. ;-) |
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 16.03.2009
Сообщений: 1,013
|
![]()
У тебя ф-ция calc исп-ся до того как она реализуется... в таком случае ее надо объявить выше точки использования с ключевым словом forward
Код:
Uguu~
|
![]() |
![]() |
![]() |
#4 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Цитата:
Код:
I'm learning to live...
|
||
![]() |
![]() |
![]() |
#5 |
Регистрация: 06.04.2009
Сообщений: 6
|
![]()
Спасибо)))
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
На Delphi 7 сделать игру кто хочет стать миллионером в delphi 7 | 666dart666 | Помощь студентам | 11 | 04.11.2010 17:57 |
Программа-тест в Delphi) скиньте))а то програмку здавать преподу надо,и самой хочется понять Delphi | Верчик | Помощь студентам | 9 | 02.03.2009 17:46 |
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? | redred | Общие вопросы Delphi | 10 | 11.12.2007 10:43 |
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? | dagarik | БД в Delphi | 7 | 22.10.2007 17:54 |
не StringGrid1.Cells[1,1]:='Delphi'; а вот так SG1.C[1,1]:='Delphi' | Nemesisking | Компоненты Delphi | 7 | 08.09.2007 03:27 |