|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Глюки: Undeclared Identifier
Такая проблема: писал проект под 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
|
|||
|
|||
Спасибо большое, помогло. Тему офф.
|