
24.03.2008, 18:09
|
Прохожий
|
|
Регистрация: 22.03.2008
Сообщения: 9
Репутация: 10
|
|
все вроде бы сделал,но ошибка
[Error] Unit1.pas(60): Unsatisfied forward or external declaration: 'TForm1.GetAnswer'
и какого типа должна быть переменная Anwer?Которой присваиваем функцию, могу весь код выложить исправите?
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ICQClient, Menus, ExtCtrls;
type
TForm1 = class(TForm)
ICQClient1: TICQClient;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
MainMenu1: TMainMenu;
N1: TMenuItem;
GroupBox2: TGroupBox;
Memo1: TMemo;
GroupBox3: TGroupBox;
GroupBox4: TGroupBox;
Memo2: TMemo;
GroupBox5: TGroupBox;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
CheckBox1: TCheckBox;
Label6: TLabel;
Edit6: TEdit;
Timer1: TTimer;
ComboBox1: TComboBox;
Edit1: TEdit;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
GroupBox6: TGroupBox;
Button3: TButton;
fileopen: TOpenDialog;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ICQClient1MessageRecv(Sender: TObject; Msg, UIN: String);
procedure N1Click(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure Memo2KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ICQClient1Login(Sender: TObject);
procedure ICQClient1ConnectionFailed(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
function GetAnswer(SQuestion: String): String;
function DivStr(const SourceStr: String; var SubStr1, SubStr2: String): Boolean;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ICQClient1.UIN:=strtoint(combobox1.Text);
ICQClient1.Password:=Edit1.Text;
ICQClient1.Login();
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ICQClient1.Disconnect;
end;
procedure TForm1.ICQClient1MessageRecv(Sender: TObject; Msg, UIN: String);
var a:string;
begin
Memo1.Lines.Add('('+(DateToStr(Date))+' ('+(TimeToStr(Time))+'))');
Memo1.Lines.Add(' '+UIN+': ' + msg);
Memo1.Lines.Add('');
Edit6.text:=(UIN);
a:= GetAnswer(msg);
ICQClient1.SendMessage((StrToInt(UIN)),a);
end;
procedure TForm1.N1Click(Sender: TObject);
begin
icqclient1.Disconnect;
Close;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if checkbox1.Checked=true then
Groupbox5.visible:=true
else
Groupbox5.visible:=false;
end;
procedure TForm1.Memo2KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=13 then
begin
ICQClient1.SendMessage((StrToInt(Edit6.Text)),Memo2.Lines.Text);
Memo1.Lines.Add('('+(DateToStr(Date))+' ('+(TimeToStr(Time))+'))');
Memo1.Lines.Add(' Вы: '+Memo2.Text);
Memo2.Lines.clear;
end;
end;
procedure TForm1.ICQClient1Login(Sender: TObject);
begin
if ICQClient1.LoggedIn then
begin
Memo1.Lines.Add('Соединение с сервером установлено.');
Timer1.Enabled := True;
end;
end;
procedure TForm1.ICQClient1ConnectionFailed(Sender: TObject);
begin
Memo1.Lines.Add('Не удалось соединиться с сервером.');
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ICQClient1.SendKeepAlive;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
ICQClient1.Login();
end;
procedure TForm1.N4Click(Sender: TObject);
begin
icqclient1.Status:=1;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
icqclient1.Status:=2;
end;
procedure TForm1.N6Click(Sender: TObject);
begin
icqclient1.Status:=4;
end;
procedure TForm1.Button3Click(Sender: TObject);
var f:file;
begin
fileopen.Execute;
assignfile(f,fileopen.FileName);
end;
function GetAnswer(SQuestion: String): String;
var
Dlg: TOpenDialog;
FileStrings: TStringList;
SFileName: String;
function DivStr(const SourceStr: String; var SubStr1, SubStr2: String): Boolean;
var
i: Integer;
begin
i := Pos(';', SourceStr);
if i <> 0 then begin
SubStr1 := Copy(SourceStr, 1, i - 1);
SubStr2 := Copy(SourceStr, i + 1, Length(SourceStr) - i);
end;
Result := i <> 0;
end;
function FindAnswer: String;
var
i: Integer;
S1, S2: String;
begin
Result := '';
for i := 0 to FileStrings.Count - 1 do
if DivStr(FileStrings[i], S1, S2) then
if AnsiCompareText(SQuestion, S1) = 0 then begin
Result := S2;
Exit;
end;
end;
begin
Result := '';
Dlg := TOpenDialog.Create(Application);
try
if Dlg.Execute
then SFileName := Dlg.FileName
else SFileName := '';
finally
Dlg.Free;
end;
if Length(SFileName) = 0 then Exit;
FileStrings := TStringList.Create;
try
FileStrings.LoadFromFile(SFileName);
Result := FindAnswer;
finally
FileStrings.Free;
end;
end;
end.
Admin: Не путать CODE с QUOTE 
|