Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Внизошибка периода компиляции Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.06 c