[ Delphi / Pascal ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by banned, 6 May 2007.

Thread Status:
Not open for further replies.
  1. kaka

    kaka New Member

    Joined:
    24 Feb 2011
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    парни привет.Я знаю что не в тему,но все таки.....кто тут сможет обучить програмированию,ну или доскажет?бюджета пока что как токогого нету....потому чо тока начинаю внедрятся.....если есть такие люди то пишите Лс...Спасибо
     
  2. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Читай книги. Можешь на курсы записаться на intuit.ru(они бесплатные).

    От меня вопрос. Как в Synapse получать страницу не полностью?
     
  3. Helium

    Helium New Member

    Joined:
    6 Jan 2010
    Messages:
    22
    Likes Received:
    3
    Reputations:
    0
    Разобрался
     
    #7923 Helium, 4 Mar 2011
    Last edited: 7 Apr 2011
  4. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Кто может написать мини-скрипт(на чем угодно, хоть батник), который в текстовик выведет все файлы, которые лежат рядом с этим скриптом. Там работы на 2 минуты, просто сейчас под рукой нет ничего.

    Буду очень признателен :rolleyes:
     
  5. ADR-007

    ADR-007 Member

    Joined:
    12 Jul 2010
    Messages:
    218
    Likes Received:
    9
    Reputations:
    0
    сканер портов
    Code:
    unit AdrPortScanner;
    
    interface
    
    uses
      Classes,SysUtils,WinSock,AppEvnts,Windows,Forms,Messages;
    
    type
      TPortExistsEvent = procedure (Sender:TObject; Port:Integer) of object;
      TWorkBeginEvent = procedure (Sender:TObject; Min,Max:integer) of object;
    
      TPortScanner = class abstract
      private
        FIPAddress: AnsiString;
        FOnPortChecking: TPortExistsEvent;
        FOnCheckingDone: TNotifyEvent;
        FOnPortExists: TPortExistsEvent;
        FOnWork: TPortExistsEvent;
        FOnWorkBegin: TWorkBeginEvent;
        FOnWorkEnd: TNotifyEvent;
        FTerminated: boolean;
        FTimeOut: Word;
        FPortStart: Word;
        FPortEnd: Word;
      protected
        FWorking: boolean;
        FMaxOpenPort: Word;
        procedure SetMaxOpenPort(const Value: Word);  virtual; abstract;
      public
        constructor Create;
    
        function  StartChecking(const URI:string):boolean;  overload;
        procedure StartChecking;                    overload; virtual; abstract;
        procedure Terminate;
    
        property IPAddress:AnsiString   read  FIPAddress  write FIPAddress;
        property MaxOpenPort:Word read FMaxOpenPort write SetMaxOpenPort;
        property PortStart:Word  read  FPortStart  write FPortStart;
        property PortEnd:Word  read  FPortEnd  write FPortEnd;
        property Terminated:boolean read FTerminated write FTerminated;
        property TimeOut:Word  read  FTimeOut  write FTimeOut;
        property Working:boolean read FWorking;
    
        property OnWork:TPortExistsEvent read FOnWork write FOnWork;
        property OnWorkBegin:TWorkBeginEvent read FOnWorkBegin write FOnWorkBegin;
        property OnWorkEnd:TNotifyEvent read FOnWorkEnd write FOnWorkEnd;
        property OnPortChecking:TPortExistsEvent read FOnPortChecking
            write FOnPortChecking;
        property OnPortExists:TPortExistsEvent read FOnPortExists
            write FOnPortExists;
        property OnCheckingDone:TNotifyEvent read FOnCheckingDone
            write FOnCheckingDone;
      end;
    
    //==============================================================================
    
      TPortScanner1 = class (TPortScanner)
      type
        TFSocket = record
          sa: TSockAddr;
          FData: integer;
          ATimeOut: word;
        end;
    
      private
        FSocket: array of TFSocket;
        FPort: WORD;
        FInfo: TWSADATA;
        FHost: integer;
        FWorking:boolean;
        FTerminated:boolean;
    
        procedure InitSockets;
        procedure ApplicationEventsMessage(var Msg: tagMSG; var Handled: Boolean);
        procedure Checking;
      protected
        procedure SetMaxOpenPort(const Value: Word); override;
      public
        constructor Create;
        destructor Destroy;   override;
    
        procedure StartChecking;  override;
      end;
    
      function getIPFromHost(const HostName: AnsiString): AnsiString;
    
    implementation//****************************************************************
    
    function GetIPFromHost(const HostName: Ansistring): AnsiString;
    type
      TaPInAddr = array[0..10] of PInAddr;
      PaPInAddr = ^TaPInAddr;
    var
      phe: PHostEnt;
      pptr: PaPInAddr;
      i: Integer;
      GInitData: TWSAData;
    begin
      WSAStartup($101, GInitData);
      Result := '';
      phe := GetHostByName(PAnsiChar(HostName));
      if phe = nil then Exit;
      pPtr := PaPInAddr(phe^.h_addr_list);
      i := 0;
      while pPtr^[i] <> nil do
      begin
        Result := inet_ntoa(pptr^[i]^);
        Inc(i);
      end;
      WSACleanup;
    end;
    
    { TPortScanner1 }
    
    procedure TPortScanner1.ApplicationEventsMessage(var Msg: tagMSG;
      var Handled: Boolean);
    begin
      if (Msg.message>=FPortStart+WM_USER)
                                    and (Msg.message<=FPortEnd+WM_USER)
      then
      if WSAGETSELECTERROR(Msg.lParam)=0
      then
        case WSAGETSELECTEVENT(msg.lParam) of
          FD_CONNECT:
            begin
              if Assigned(OnPortExists) then
                OnPortExists(Self,Msg.message - WM_USER);
              Application.ProcessMessages;
            end;
        end;
      Handled:=false;
    end;
    
    procedure TPortScanner1.Checking;
    var
     i: integer;
     buf: in_addr;
    begin
    
     FHost:=inet_addr(PAnsiChar(FIPAddress));
     if (FPortEnd<=FPortStart)or (FPortEnd>32768)
     then FHost:=SOCKET_ERROR;
     if FHost=SOCKET_ERROR
     then
      begin
       if Assigned(OnWorkEnd) then
        OnWorkEnd(self);
       Exit;
      end;
     buf.S_addr:=FHost;
     FPort:=FPortStart;
     for i:=0 to MaxOpenPort-1 do
      with FSocket[i] do
       begin
        TimeOut:=0;
        FData:=Socket(AF_INET, SOCK_STREAM, 0);
       end;
     //
     while not Terminated do
      begin
       Application.ProcessMessages;
       InitSockets;
       if FPort>=FPortEnd
       then break;
      end;
     //
     for i:=0 to MaxOpenPort-1 do
      CloseSocket(FSocket[i].FData);
     //
    end;
    
    constructor TPortScanner1.Create;
    var
     i: integer;
    begin
      inherited;
      SetLength(FSocket,MaxOpenPort);
      if WSAStartup(MAKEWORD(2, 0), FInfo)<>0
      then Halt;
      for i:=0 to MaxOpenPort-1 do
      with FSocket[i] do
        begin
          ATimeOut := 0;
          FData := Socket(AF_INET, SOCK_STREAM, 0);
          if FData = SOCKET_ERROR
          then
            begin
            WSACleanup;
            Halt;
          end;
        end;
      Application.OnMessage:=ApplicationEventsMessage;
    end;
    
    destructor TPortScanner1.Destroy;
    var
     i: integer;
    begin
      for i:=0 to MaxOpenPort-1 do
        CloseSocket(FSocket[i].FData);
      WSACleanup;
      inherited;
    end;
    
    procedure TPortScanner1.InitSockets;
    var
     i,time: word;
    begin
     for i:=0 to MaxOpenPort-1 do
      with FSocket[i] do
       if (FPort>=FPortEnd) or (FTerminated)
       then break
       else
        if (GetTickCount-ATimeOut>TimeOut)
        then
         begin
          sa.sin_family:=AF_INET;
          sa.sin_addr.S_addr:=FHost;
          sa.sin_port:=htons(FPort);
          //
          WSAAsyncSelect(FData, Application.Handle, WM_USER+FPort, FD_CONNECT);
          connect(FData, FSocket[i].sa, SizeOf(FSocket[i].sa));
          ATimeOut:=GetTickCount;
          inc(FPort);
          if Assigned(OnWork) then
            OnWork(Self,FPort);
          Application.ProcessMessages;
          //
          //Sleep(TimeOut div MaxOpenPort);
          time:=GetTickCount;
          while GetTickCount-time<TimeOut div MaxOpenPort do
            Application.ProcessMessages;
         end;
    end;
    
    procedure TPortScanner1.SetMaxOpenPort(const Value: Word);
    begin
      SetLength(FSocket,Value);
      FMaxOpenPort:=Value;
    end;
    
    procedure TPortScanner1.StartChecking;
    begin
      if not Working then
      begin
        FWorking:=true;
        if Assigned(OnWorkBegin) then
          OnWorkBegin(self,FPortStart,FPortEnd);
        try
          Checking;
          FWorking:=false;
        finally
          if Assigned(OnWorkEnd) then
            OnWorkEnd(self);
        end;
      end;
    end;
    
    { TPortScanner }
    
    constructor TPortScanner.Create;
    begin
      inherited;
      FTerminated:=false;
      FPortStart:=0;
      FPortEnd:=MAXSHORT;
      FTimeOut:=5000;
      FMaxOpenPort:=500;
    end;
    
    
    function TPortScanner.StartChecking(const URI: string): boolean;
    var
      s:Ansistring;
    begin
      s:=getIPFromHost(AnsiString(URI));
      Result:=s<>'';
      if Result then
      begin
        IPAddress:=s;
        StartChecking();
      end;
    end;
    
    procedure TPortScanner.Terminate;
    begin
      FTerminated:=true;
    end;
    
    end.
     
  6. arnis

    arnis Member

    Joined:
    30 Jan 2011
    Messages:
    280
    Likes Received:
    23
    Reputations:
    0
    Забирай http://www.sendspace.com/file/yd5har
     
    2 people like this.
  7. Cock3r

    Cock3r New Member

    Joined:
    19 Jan 2011
    Messages:
    14
    Likes Received:
    3
    Reputations:
    0
    нужно считать имена файлов из конкретной директории(в массив например), гугление ничего не дало
     
  8. Linkus

    Linkus Member

    Joined:
    20 Dec 2008
    Messages:
    168
    Likes Received:
    15
    Reputations:
    -1
    ужас! бедные люди, забаненные гуглом!

    http://www.delphisources.ru/pages/faq/faq_delphi_basics/FindFirst.php.html
    Первая же ссылка из МОРЯ ссылок, выданных гуглом.

    Тебе остаётся только подставить нужную директорию и имя файла *.*
     
    1 person likes this.
  9. Helium

    Helium New Member

    Joined:
    6 Jan 2010
    Messages:
    22
    Likes Received:
    3
    Reputations:
    0
    И, каким образом проверить есть ли подключение к интернету?
     
  10. arnis

    arnis Member

    Joined:
    30 Jan 2011
    Messages:
    280
    Likes Received:
    23
    Reputations:
    0
    Code:
    Function IsConnectedToInternet: Boolean;
    var
         dwConnectionTypes: DWORD;
    begin
         dwConnectionTypes := INTERNET_CONNECTION_MODEM + INTERNET_CONNECTION_LAN + INTERNET_CONNECTION_PROXY;
         Result := InternetGetConnectedState(@dwConnectionTypes, 0);
    end;
    
    
    Uses WinInet; Возращает True если есть соединение
     
  11. Helium

    Helium New Member

    Joined:
    6 Jan 2010
    Messages:
    22
    Likes Received:
    3
    Reputations:
    0
    Замечательно работает.
     
    1 person likes this.
  12. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Как в Synapse получать страницу не полностью? Только только первые n байт?
     
  13. arnis

    arnis Member

    Joined:
    30 Jan 2011
    Messages:
    280
    Likes Received:
    23
    Reputations:
    0
    В обработчике загрузки ставишь считчик как достиг нужно количества делаешь аборт
     
  14. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Слушай, а как после abort получить код страницы?
    В Document пусто...
     
  15. Helium

    Helium New Member

    Joined:
    6 Jan 2010
    Messages:
    22
    Likes Received:
    3
    Reputations:
    0
    Разобрался
     
    #7935 Helium, 7 Mar 2011
    Last edited: 7 Apr 2011
  16. RAINUR

    RAINUR New Member

    Joined:
    24 May 2010
    Messages:
    151
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте:)
    Динамически создаю shape в массиве и использую drag and drop с ними ..
    Ну не в это мдело))))
    Как в drag and drop плавно перемещать объекты.
    То есть, взял мышкой объект. И пока не отпустил кнопку правой мышки, объект движется с мышкой.
    Причем если отпустить мышку в неположеном месте, то шарик возвращается обратно:)
     
  17. ADR-007

    ADR-007 Member

    Joined:
    12 Jul 2010
    Messages:
    218
    Likes Received:
    9
    Reputations:
    0
    код в студию!))
     
  18. Helium

    Helium New Member

    Joined:
    6 Jan 2010
    Messages:
    22
    Likes Received:
    3
    Reputations:
    0
    Разобрался
     
    #7938 Helium, 8 Mar 2011
    Last edited: 7 Apr 2011
  19. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Так нормально установить таймаут у Synapse?
    http.Timeout и HTTP.Sock.SocksTimeout ничего не дают.
     
  20. ADR-007

    ADR-007 Member

    Joined:
    12 Jul 2010
    Messages:
    218
    Likes Received:
    9
    Reputations:
    0
    на каком месте выбивает? (F7 для пошагового прохода)
     
Thread Status:
Not open for further replies.