Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Почему не работает Whois


Автор: pomogite 3.5.2006, 13:10
Вот нужно написать утилиту Whois а у меня выскакивает ошибка, где я что то неправильно сделала?

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdWhois, StdCtrls, jpeg, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    IdWhois1: TIdWhois;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var line,Findresult:string;
ipos:integer;
begin
 Memo1.Clear;
 FindResult:=IdWhois.Whois(Edit1.Text);//Вот тут выскакивает ошибка!!!
 while Lenght(FindResult)> 0 do
    begin
      ipos:=Pos(#10,FindResult);
      Line:=Copy(FindResult,1,ipos - 1);
      Memo1.Lines.Add(Line);
      Delete(FindResult,1,Lenght(Line)+1);

end;

end.
 

Автор: _hunter 3.5.2006, 13:29
что за ошибка "выскакивает"?
и почему на форме у тебя IdWhois1 висит а работаеш ты с IdWhois? 

Автор: pomogite 3.5.2006, 13:58
_hunter, 
Вот в этом то и была моя ошибка  smile 
Спасибо smile  
Ещё вопрос, у меня мемо слишком маленькое а текста много так что как туда попадает информация то показывается только самый низ а как сделать чтоб показывался сначала верх, и как сделать кнопки прокрутки. если можно лучше код  

Автор: _hunter 3.5.2006, 14:27
1 -- CaretPos в 0 поставь (или SelStart)
2 -- поставь ScrollBars в ssBoth 

Автор: pomogite 3.5.2006, 14:49
а как 1 сделать пишу memo1.CaretPos:=1; ошибку выдаёт 

Автор: Alexeis 3.5.2006, 14:54
memo1.CaretPos := Point(0, 0); 

Автор: pomogite 3.5.2006, 14:59
всё равно на самый низ скидывает 

Автор: Snowy 3.5.2006, 15:14
Код
var i: Integer;
begin
  repeat
    i := Memo1.Perform(EM_SCROLL, SB_PAGEUP, 0);
  until (Word(i) = 0) or (Word(i shr 16) <= 0);
  

Автор: Alexeis 3.5.2006, 15:14
А так?
SetScrollPos(Memo1.Handle ,SB_VERT,0, true); 

Автор: Snowy 3.5.2006, 15:19
Цитата(alexeis1 @  3.5.2006,  15:14 Найти цитируемый пост)
SetScrollPos(Memo1.Handle ,SB_VERT,0, true); 
Гы. Прикольно. Скрол встал в верхнюю позицию, а текст остался низ...

EM_SCROLL работает.

Добавлено @ 15:20 
ЗЫ. Модератор: Пожалуйста, один топик - один вопрос. 

Автор: Alexeis 3.5.2006, 15:28
Snowy, поздно увидел 
Вот правельный вариант
Memo1.Perform(WM_VSCROLL, SB_TOP, 0); 

Автор: pomogite 3.5.2006, 15:36
Ага всё работает спасибо! 
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)