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

Вниз

ошибка периода компиляции   Найти похожие ветки 

 
yagluboko ©   (2010-04-29 01:21) [0]

Доброго всем времени суток. Тут такая проблемка- не могу понять, что не так: компилятор пишет такую вот ошибку: Unit1.pas(31): Unsatisfied forward or external declaration: "TForm1.PrintTree". Пожалуйста, подскажите, в чём здесь дело? Вот код:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TNode = ^PNode;
 PNode = record
   Key: string;
   Left, Right: TNode;
 end;
 TForm1 = class(TForm)
   OpenButton: TButton;
   WorkButton: TButton;
   CloseButton: TButton;
   Memo1: TMemo;
   ListBox1: TListBox;
   OpenDialog1: TOpenDialog;
   procedure OpenButtonClick(Sender: TObject);
   procedure WorkButtonClick(Sender: TObject);
   procedure PrintTree (Tree: TNode);
   procedure Search(x: string; var Tree: TNode);
   procedure DeleteTree (var Tree: TNode);
   procedure CloseButtonClick(Sender: TObject);

 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 x: string;
 Tree: TNode;

implementation

{$R *.dfm}

procedure TForm1.DeleteTree(var Tree: TNode);
begin
 if Tree <> nil then
 with Tree^ do
 begin
   DeleteTree (Left);
   Dispose (Tree);
   DeleteTree (Right);
 end;
end;

procedure TForm1.OpenButtonClick(Sender: TObject);
begin
 if OpenDialog1.Execute then
 begin
   Memo1.Clear;
   Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
 end;
end;

procedure TForm1.Search(x: string; var Tree: TNode);
begin
 if Tree = nil then
 begin
   new (Tree);
   with Tree^ do
   begin
     Key := x;
     Left := nil;
     Right := nil;
   end;
 end else
   if x < Tree^.Key then
     Search(x, Tree^.Left)
   else
     if x > Tree^.Key then
       Search(x, Tree^.Right)
     else
       Exit;
end;

procedure PrintTree (Tree: TNode);
begin
 if Tree <> nil then
 begin
   PrintTree (Tree^.Left);
   Form1.ListBox1.Items.Add(Tree^.Key);
   PrintTree (Tree^.Right);
 end;
end;

procedure TForm1.WorkButtonClick(Sender: TObject);
const
 MySet = [" ", ".", ",", ";", ":", "!", "?", "(", ")", "[", "]", "{", "}", "-",
 "+", "/", "\", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"];
var
 i, j: integer;
 s, s0: string;
begin
 for i := 0 to Memo1.Lines.Count - 1 do
 begin
   s := Memo1.Lines[i];
   s0 := "";
   j := 0;
   while j < Length(s) do
   begin
     inc(j);
     if not (s[j] in MySet) then
       s0 := s0 + s[j]
     else
       Search(x, Tree);
   end;
 end;
 PrintTree (Tree);
end;

procedure TForm1.CloseButtonClick(Sender: TObject);
begin
 DeleteTree (Tree);
 Close;
end;

end.


 
Германн ©   (2010-04-29 02:09) [1]


> procedure PrintTree (Tree: TNode);

Процедура объявлена как метод класса. А реализована как простая процедура.
Замени
> procedure PrintTree (Tree: TNode);
> begin
>

на TForm1.PrintTree (Tree: TNode);


 
Германн ©   (2010-04-29 02:45) [2]

Когда же вы перестанете быть чукчами. :)


 
Anatoly Podgoretsky ©   (2010-04-29 07:37) [3]

> yagluboko  (29.04.2010 01:21:00)  [0]

Наверно у тебя реализация метода отсутствует, да что там наверно, когда так и есть



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

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.356 c
15-1268761702
AntonioBanderas
2010-03-16 20:48
2010.08.27
База комплектующих для АРМ


2-1272283178
Новичек
2010-04-26 15:59
2010.08.27
Как правильно дать на печать принтеру штрих код


2-1275245281
Semen
2010-05-30 22:48
2010.08.27
Поиск и открытие файлов


2-1265712324
Nilman
2010-02-09 13:45
2010.08.27
Поясните пожалуйста значение свойства TThread.FreeOnTerminate


2-1273484332
Fr
2010-05-10 13:38
2010.08.27
сортировка слова по символам