![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Такая проблема: писал проект под Delphi 7 Lite на одном компе. После того как он накрылся, пересел за ноут, поставил ту же сборку делфии и попытался скомпилировать проект.
Компилятор ругался на IdTelnet1 везде, где он был. Перепробовал уже все, даже переписывал заного с копированием кода - все тоже самое. Часть кода: Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdTelnet, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
Memo1: TMemo;
Edit2: TEdit;
Button2: TButton;
IdTelnet1: TIdTelnet;
Label2: TLabel;
Edit3: TEdit;
Button3: TButton;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure IdTelnet1DataAvailable(Sender: TIdTelnet;
const Buffer: String);
procedure FormCreate(Sender: TObject);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure IdTelnet1Connect(Sender: TObject);
procedure IdTelnet1Connected(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
function SendCommand(s: string): boolean;
var i: integer;
begin
for i := 1 to length(s) do
IdTelnet1.SendCh(s[i]);
IdTelnet1.SendCh(#13);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Enabled := False;
IdTelnet1.Host := Edit1.Text;
IdTelnet1.Connect;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if IdTelnet1.Connected then
begin
SendCommand(Edit2.Text);
Edit2.Clear;
Edit2.SetFocus;
end;
end;
procedure TForm1.IdTelnet1DataAvailable(Sender: TIdTelnet;
const Buffer: String);
const
CR = #13;
LF = #10;
var
Start, Stop : Integer;
begin
if Memo1.Lines.Count = 0 then
Memo1.Lines.Add('');
Start := 1;
Stop := Pos(CR, Buffer);
if Stop = 0 then
Stop := Length(Buffer) + 1;
while Start <= Length(Buffer) do begin
Memo1.Lines.Strings[Memo1.Lines.Count - 1] :=
Memo1.Lines.Strings[Memo1.Lines.Count - 1] +
Copy(Buffer, Start, Stop - Start);
if Buffer[Stop] = CR then begin
Memo1.Lines.Add('');
{$IFNDEF Linux}
SendMessage(Memo1.Handle, WM_KEYDOWN, VK_UP, 1);
{$ENDIF}
end;
Start := Stop + 1;
if Start > Length(Buffer) then
Break;
if Buffer[Start] = LF then
Start := Start + 1;
Stop := Start;
while (Buffer[Stop] <> CR) and (Stop <= Length(Buffer)) do
Stop := Stop + 1;
end;
end; |
|
#2
|
||||
|
||||
|
Перейди во вкладку Indy Clients и кинь на форму компонент IdTelnet.
![]() |
|
#3
|
|||
|
|||
|
Код:
uses IdTelnet; type IdTelnet1: TIdTelnet; |
|
#4
|
||||
|
||||
|
Тогда возможно не та версия Indy компонент, раз компилятор не находит данного компонента. Выход из ситуации: переустановить Indy, либо Delphi
![]() |
|
#5
|
|||
|
|||
|
Ну как... Я ставил одну и ту-же седьмую лайт, с одного дистрибутива, версия инди одинаковая.
|
|
#6
|
||||
|
||||
|
Может не находится .pas или .dcu файл?
|
|
#7
|
||||
|
||||
|
Цитата:
|
|
#8
|
|||
|
|||
|
Все .pas и .dcu в папке с проектом.
Ругань в названии темы. |
|
#9
|
||||
|
||||
|
удалить с формы TIdTelnet и кинуть заново? открыть это http://data.cod.ru/90004 ? создать новый проект с TIdTelnet?
какие ошибки? |
|
#10
|
|||
|
|||
|
Пересоздавал, перекидывал.
Скачал проект, компилируется, но когда начинаю писать дальше: Код:
function SendCommand(s: string): Boolean;
var i: Integer;
begin
for i:=1 to Length(s) do
IdTelnet1.SendCh(s[i]);
IdTelnet1.SendCh(#13);
end;
[Error] Unit1.pas(30): Undeclared identifier: 'IdTelnet1'
[Error] Unit1.pas(31): Missing operator or semicolon
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas' |
|
#11
|
||||
|
||||
|
Так какого беса вы функцию вне контекста формы описываете? Вы же обращаетесь к компонентам формы, так извольте как-то их упомянуть.
Так: Код:
function TForm1.SendCommand(s: string): Boolean; Код:
Form1.IdTelnet1.SendCh(s[i]);
Form1.IdTelnet1.SendCh(#13); |
|
#12
|
|||
|
|||
|
Спасибо большое, помогло. Тему офф.
|