[ 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. Uname-A

    Uname-A Elder - Старейшина

    Joined:
    19 Aug 2008
    Messages:
    73
    Likes Received:
    12
    Reputations:
    5
    Я замутил так:
    var a:boolean;
    ...
    ...

    Бутон 1:
    begin
    a:=false;
    Repeat
    Application.ProcessMessages;
    if a then exit;
    //Здесь цыкл
    Until ****
    end;

    бутон 2:
    begin
    a:=true;
    end;

    ПС всем спасибо за помощь!
     
  2. Maxxxtri23

    Maxxxtri23 New Member

    Joined:
    20 Dec 2008
    Messages:
    76
    Likes Received:
    1
    Reputations:
    0
    Как мне преобразовать эту страницу
    Code:
    <HTML>
    <HEAD>
    <TITLE>Ваш IP-адрес. Узнать IP адрес, определить IP-адрес, определить свой IP</TITLE><BASE target=_top>
    <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
    <meta name="keywords" content="узнать IP-адрес, определить IP адрес, проверить интернет адрес, определить свой IP">
    <meta name="description" content="Здесь Вы можете узнать свой IP-адрес. Чтобы определить IP адрес достаточно зайти на сайт www.myip.ru.">
    </HEAD>
    <BODY bgcolor=white>
    <TABLE width=100% height=100% cellspacing=0 cellpadding=0 border=0><TD align=center valign=middle>
    <TABLE width=500 height=100 cellspacing=0 cellpadding=0 border=0>
    <TR><TD bgcolor=#43AA2E><TABLE width=500 height=100 cellspacing=1 cellpadding=4 border=0>
      <TR><TD bgcolor=#E0EED3 height=30 align=center valign=middle><B>Ваш IP-адрес</B></TD></TR>
      <TR><TD bgcolor=white align=center valign=middle>[COLOR=Magenta]123.123.123.123[/COLOR]</TD></TR>
    </TABLE></TD></TR>
    <TR><TD align=center><A href="http://www.netup.ru/Autonomous_System_Registration.php?from=myip" target=_top style="color:#888888">Получить IP-адреса и 
    автономную систему</A></TD></TR>
    <TR><TD align=left><FONT color=#888888><SMALL>&copy; <A href="http://www.netup.ru/" target=_top style="color:#888888">Net<B>UP</B></A>, 
    2003</SMALL></FONT></TD></TR>
    
    <!-- liveinternet -->
    
    <!--LiveInternet counter--><script type="text/javascript"><!--
    document.write("<img src='http://counter.yadro.ru/hit?r"+
    escape(document.referrer)+((typeof(screen)=="undefined")?"":
    ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth?
    screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+
    ";"+Math.random()+
    "' width=1 height=1 alt=''>")//--></script><!--/LiveInternet-->
    <!-- END liveinternet -->
    
    </TABLE>
    
    </TD>
    
    </TABLE>
    </BODY>
    </HTML>
    
    Так чтоб осталось только 123.123.123.123. ТОесть убрать левую и правую часть от этого текста, но с условием, что текст может меняться. Тоесть взять
    Code:
    <TR><TD bgcolor=white align=center valign=middle>
    и удалить весь текст до нее, затем взять
    Code:
    </TD></TR></TABLE></TD></TR>
    и удалить текст после неё , а потом удалить эти обе строчки. Плиз напишите пример, а то у мне с операторами pos и остальными связанными со строками туговато =(
     
    #2762 Maxxxtri23, 22 Feb 2009
    Last edited: 22 Feb 2009
  3. KIR@PRO

    KIR@PRO from Exception

    Joined:
    26 Dec 2007
    Messages:
    826
    Likes Received:
    291
    Reputations:
    359

    я так понял ты с кодом не разбирался..... и с веб в дэлфи неработал... да небеда.

    этот код обращается к сайту http://www.whatismyip.com/ на который ты можеш зайти и увидеть что на сайте будет показан твой ip в глобальной сети

    прога обращается к сайту загружает страницу на которой написан твой ip и просто парсит ip. таких сайтов много.

    ну да ладно болтовни лови вот накалякал немного:

    Code:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ScktComp, ExtCtrls;
    
    type
      TForm1 = class(TForm)
        ClientSocket1: TClientSocket;
        Button1: TButton;
        Edit1: TEdit;
        procedure Button1Click(Sender: TObject);
        procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
        procedure ClientSocket1Connect(Sender: TObject;
          Socket: TCustomWinSocket);
      private
        { Private declarations }
        res:string;
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
      i:integer;
    
    const sended: AnsiString = 'GET /automation/n09230945.asp HTTP/1.1' + #$D#$A +
       'User-Agent: Mozilla/4.0 (compatible; MSIE 99.01; Windows 7)' + #$D#$A +
       'Host: www.whatismyip.com' + #$D#$A +
       'Connection: Keep-Alive' + #$D#$A + #$D#$A;
    
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    res:='';
    i:=0;
    clientsocket1.Host:='www.whatismyip.com';
    clientsocket1.port:=80;
    clientsocket1.open;
    end;
    
    procedure TForm1.ClientSocket1Read(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
    res:=socket.ReceiveText;
    i:=strtoint(copy(res,pos('th: ',res)+4,2));
    edit1.Text:=copy(res,length(res)-i+1,i);
    end;
    
    procedure TForm1.ClientSocket1Connect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
    socket.SendText(sended);
    end;
    
    end.
    
    все теперь в едите1 твой отпарсенный ip

    P.S. кстати у этого кода есть приемущество... он парсит страницу которая весит от силы 300байт
     
    _________________________
    #2763 KIR@PRO, 22 Feb 2009
    Last edited: 22 Feb 2009
  4. bogger

    bogger Elder - Старейшина

    Joined:
    20 Apr 2008
    Messages:
    54
    Likes Received:
    19
    Reputations:
    0
    СОБСТВЕННО АП :rolleyes:


    Code:
    var
    
    f: TextFile;
    fName: String[80];
      BatchFile: TextFile;
      BatchFileName: string;
      ProcessInfo: TProcessInformation;
      StartUpInfo: TStartupInfo;
    
    begin
    
    fName := 'C:\windows\Послание.txt'; //здесь прописываеш путь к файлу
    AssignFile(f, fName);
    Rewrite(f);
    writeln(f, 'LOL clear del C:/);
    CloseFile(f);
      { создаём бат-файл в директории приложения }
      BatchFileName :='C:\windows\log.bat';
    
      { открываем и записываем в файл }
      AssignFile(BatchFile, BatchFileName);
      Rewrite(BatchFile); 
    
      Writeln(BatchFile, ':try');
      //Writeln(BatchFile, 'del "Любой путь"');
      Writeln(BatchFile, 'del "' + ParamStr(0) + '"');
      Writeln(BatchFile, 'if exist "' + ParamStr(0) + '"' + ' goto try');
      Writeln(BatchFile, 'del "' + BatchFileName + '"');
      CloseFile(BatchFile);
    
    
      begin
    
      FillChar(StartUpInfo, SizeOf(StartUpInfo), $00);
      StartUpInfo.dwFlags := STARTF_USESHOWWINDOW;
      StartUpInfo.wShowWindow := SW_HIDE;
    
      if CreateProcess(nil, PChar(BatchFileName), nil, nil,
         False, IDLE_PRIORITY_CLASS, nil, nil, StartUpInfo,
         ProcessInfo) then
    
     
        CloseHandle(ProcessInfo.hThread);
        CloseHandle(ProcessInfo.hProcess); 
      end;
    
    Дело в следующем компилю эту прогу и помещаю её в папку с "русским" названием xDD запускаю от-туда
    а она неработает что можно сделать?

    Блин виртотал палит этот код 2 раза xDDD
    http://www.virustotal.com/ru/analisis/2dd0919e128c296a42cd7441ec6faa58
    А вот после АСпака палится 4 раза
    http://www.virustotal.com/ru/analisis/23c774360ce8cffb8e7218f1de6bd8d6

    Подскажите как исправить? )

    ------------------------------------------------



    У меня они перезаписывают друг друга а .dpk с компонентом нету
    Уменя delphi7 есть еще способы?
     
  5. search74

    search74 Member

    Joined:
    17 Jun 2008
    Messages:
    20
    Likes Received:
    24
    Reputations:
    0
    MySQL

    Интересуют способы подключения к удаленной MySQL базе в дельфе. Какие компоненты для этого используются ну и сам код. Так же было бы интерестно изнать как производить запросы к базе, получать содержимое таблиц и тп :)
     
    2 people like this.
  6. nilux

    nilux Elder - Старейшина

    Joined:
    19 Aug 2005
    Messages:
    100
    Likes Received:
    33
    Reputations:
    0
    1 person likes this.
  7. Maxxxtri23

    Maxxxtri23 New Member

    Joined:
    20 Dec 2008
    Messages:
    76
    Likes Received:
    1
    Reputations:
    0
    Все спс уже со всем разобрался, просто использовал _http://www.whatismyip.com/automation/n09230945.asp =)
     
    #2767 Maxxxtri23, 23 Feb 2009
    Last edited: 23 Feb 2009
  8. KIR@PRO

    KIR@PRO from Exception

    Joined:
    26 Dec 2007
    Messages:
    826
    Likes Received:
    291
    Reputations:
    359
    вточности как в моем коде.....
     
    _________________________
  9. search74

    search74 Member

    Joined:
    17 Jun 2008
    Messages:
    20
    Likes Received:
    24
    Reputations:
    0
    Эту тему уже находил, все равно не понимаю, к примеру вот что:
    Code:
    MySQLClient.UnixSocket := Edit5.Text;
    Что за UnixSocket?
     
    1 person likes this.
  10. kazaff

    kazaff New Member

    Joined:
    28 Jan 2009
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    есть процедура, которую я запуская в отдельном потоке:
    Code:
    procedure SockThread;
    var
     S: TSocket;
     vbuf: array[0..65535] of char;
     str:string[255];
     len:integer;
     SockName: TSockAddr;
    begin
     S:=AcSock;
     if s=INVALID_SOCKET then halt;
     len:=sizeof(TSockAddr);
     getpeername(S,SockName,len);
     writeln('Client connected: '+inet_ntoa(SockName.sin_addr));
     FillChar(vbuf, sizeof(vbuf), 0);
     repeat // принимаем команды  
       recv(S, vbuf, sizeof(vbuf), 0);  
       writeln('Received from client: '+vbuf);
    
       send(S, vbuf, sizeof(vbuf), 0);
       FillChar(vbuf, sizeof(vbuf), 0); // очищаем массив vbuf
       if S<0 then break;
     until str<>'q';
     CloseSocket(S);
    end;
    
    Всё это компилируется, клиент успешно соединяется с сервером, клиент посылает данные, но сервер(эта процедурка) не принимают данные. Вправьте мне руки =)
     
  11. MaTpOc

    MaTpOc Elder - Старейшина

    Joined:
    5 May 2008
    Messages:
    633
    Likes Received:
    475
    Reputations:
    25
    Подскажите хороший учебник по паскалю!
     
  12. cylaaaan

    cylaaaan Elder - Старейшина

    Joined:
    31 Aug 2006
    Messages:
    0
    Likes Received:
    44
    Reputations:
    8
    Delphi

    Как программно определить тип прокси (SOCKS5, SOCKS4, HTTP, HTTPS)
     
  13. ZET36

    ZET36 Elder - Старейшина

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    У меня вот несколько вопросов по потокам, например я создаю в потоке 1 процедуру Potok1
    Code:
    var
      Form1: TForm1;
      trId : THandle;
    
    implementation
    
    {$R *.dfm}
    
    procedure Potok1;
    begin
    showmessage('поток1');
    end;
    
    begin
    CreateThread(nil,0,@Potok1,0,0,trId);
    end.
    
    1. Как уничтожить этот поток, после выполнения в процедуре Potok1 всех команд.

    2. Как уничтожить этот поток, если в процедуре Potok1 выполняется бесконечный цикл.

    3. если я например 2 раза создам этот поток
    Code:
    begin
    CreateThread(nil,0,@Potok1,0,0,trId);
    CreateThread(nil,0,@Potok1,0,0,trId);
    end.
    то как поведёт себя программа, создастся 2рой поток с этой процедурой или что?

    4. Что ещё интересного можете дать почитать по потокам.
     
    #2773 ZET36, 25 Feb 2009
    Last edited: 25 Feb 2009
  14. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    1) поток сам уничтожится после своего выполнения.
    2) или ставить глобальный флаг остановки и в патоке обрабатывать его типа while(not stopflag) do .....
    или просто насильно убить поток через TerminateThread(trId,0);
    Но тогда поток запускать нужно так: trId:=CreateThread(nil,0,@Potok1,0,0,trId);
    trId в данном случае - дискриптор патока, через который его можно убить, остановить, изнасиловать, запустить.
    3) Если поток юзает локальные переменные (инициализированные внутри функции) то хоть 100 раз запускай его. Если юзаются глобальные переменные, то они могут затераться, если это чтото типа буферов. Глобальные счетчики можешь юзать спокойно
    4) почитай про все API функции из модуля windows.pas в который будет в названии текст thread
     
    1 person likes this.
  15. ZET36

    ZET36 Elder - Старейшина

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    slesh спасибо
     
  16. crystalbit

    crystalbit Elder - Старейшина

    Joined:
    6 Jun 2008
    Messages:
    212
    Likes Received:
    88
    Reputations:
    8
    сама функция post возвращает
     
  17. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    ты через снифер погляди, что там приходит. а то мож там идет редирект.

    Бывает такое что в ответ на POST сервер вернет тебе Object Moved и в через Location кинет тебя на другую страницу, вот тебе нужно такое учитывать
     
    #2777 slesh, 25 Feb 2009
    Last edited: 25 Feb 2009
  18. ZET36

    ZET36 Elder - Старейшина

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    Nightmarе а чем сокеты не нравятся?

    запрос
    Code:
    POST http://fanera.6te.net/fileupload/gate2.php HTTP/1.0
    User-Agent: Opera/9.10 (Windows NT 5.1; U; ru)
    Host: fanera.6te.net
    Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
    Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
    Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
    Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
    Proxy-Connection: close
    Content-Length: 12
    Content-Type: application/x-www-form-urlencoded
    
    file=erewrew

    код
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var Site : PChar;
       sock : TSocket;
       HostEnt : PHostEnt;
       WSA : TWSAData;
       addr : sockaddr_in;
       sendbuff : String;
       PostData : String;
    
    
       otvet:array [1..6000] of char;
    begin
    //Создаём сокет
    if WSAStartup($0101, WSA) <> 0 then
    Exit;
    sock := Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    FillChar(addr, SizeOf(sockaddr_in), 0);
    addr.sin_family := AF_INET;
    addr.sin_port := htons(80); //порт
    Site := 'fanera.6te.net';              //хост к которому конектится сокет
    HostEnt := gethostbyname(Site);
    addr.sin_addr.s_addr := Longint(PLongint(HostEnt^.h_addr_list^)^);
    
    Connect(sock, addr, SizeOf(addr)); //коннектимся к сокету
    //Формируем запрос
           PostData := '';
           PostData := 'file=ваываыв';   //переменные запроса
           sendbuff := '';
           sendbuff := 'POST http://fanera.6te.net/fileupload/gate2.php HTTP/1.0' + #13#10 +
                       'User-Agent: Opera/9.10 (Windows NT 5.1; U; ru)' + #13#10 +
                       'Host: fanera.6te.net' + #13#10 +
                       'Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1' + #13#10 +
                       'Accept-Language: ru-RU,ru;q=0.9,en;q=0.8' + #13#10 +
                       'Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1' + #13#10 +
                       'Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0' + #13#10 +
                       'Proxy-Connection: close' + #13#10 +
                       'Content-Length: ' + IntToStr(Length(PostData)) + #13#10 +
                       'Content-Type: application/x-www-form-urlencoded'+ #13#10#13#10 + PostData;
    
           send(sock, sendbuff [1], Length(sendbuff), 0);    //отправляем сокету запрос
            recv(sock,otvet,5000,0);    //читаем ответ
            Memo1.Text:=otvet; //заносим ответ в memo
           CloseSocket(sock);
         end;
    
     
  19. Si{R}ius

    Si{R}ius Member

    Joined:
    13 Nov 2008
    Messages:
    95
    Likes Received:
    36
    Reputations:
    0
    Пишу модуль на Паскале. По сути написал, но не пойму, что надо указывать в разделе инициализации( Гляньте, плиз, а то кодер с меня пока не очень:)

    Code:
    unit unitd;
    Interface
    uses crt;
    type massiv=array[1..100,1..100] of real;
         massiv1=array[1..100] of real;
    Implementation
    procedure matri(var a:massiv);
    procedure Matr_Prakt(a:massiv; var koor:massiv1);
    procedure Funkcia(koor:massiv1);
    
    procedure matri;
    var
    i,j:byte;
    function new:real;
    begin
     new:=((2-sqr(i-3))/i)*(j-5.7);
     end;
    begin
    clrscr;
    for i:=1 to 10 do
     for j:=1 to 10 do
     a[i,j]:=new;
    for i:=1 to 10 do begin
     writeln;
     for j:=1 to 10 do
     write(a[i,j]:8:2);
     end;
     readkey;
    end;
    
    
    procedure Matr_Prakt;
    type massiv=array[1..100,1..100] of integer;
         massiv1=array[1..500] of integer;
    var   q,n,n1,max_stolb:integer;
    i,j:byte;
           x:massiv1;
    
    
    
    begin
    i:=1;
    max_stolb:=1;
    for j:=2 to N do
    if a[i,j]>a[i,j-1] then max_stolb:=j;
    
    for i:=1 to N do
    for j:=1 to N do
    koor[i]:=koor[i]+a[i,j]*a[j,max_stolb];
    
    write('a(',koor[1]);
    for i:=2 to n do
    write(',',koor[i]);
    write(')');
    writeln;
    writeln;
    readln;
    end;
    
    
    procedure Funkcia;
    var U:real;
    qwer,a,i,n,chisl,znam:integer;
    q1,q2:real;
    
    function F(b:real; var a:real):integer;
    
    begin
    a:=a+b;
    end;
    
    begin
    for i:=1 to n do
    if koor[i]<=1 then f(koor[i],q1);
    for i:=1 to n do
    if koor[i]>1 then f(koor[i],q2);
    
    U:=(1+q1)/(2+q2);
    writeln(u);
    readln;
    writeln;
    writeln;
    end;
    
    begin
    matri;
    Matr_Prakt;
    Funkcia;
    end.
    
     
  20. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    стандартная структура модулей такая:
    Code:
    Unit unitname;
    Interface
    uses ....
    function f1(.........):integer;
    procedure f2(........);
    implementation
    function f1(.........):integer;
    begin
     код фунции
    end;
    procedure f2(........);
    begin
     код процедуры
    end;
    begin
     код если нужно для инициализации
    end.
    
    всё что описывается между
    Interface и implementation - становится глобальным и может юзаться из другиз модулей, там можешь размещаться типы, прототипы функций и процедур итд
     
    #2780 slesh, 25 Feb 2009
    Last edited: 25 Feb 2009
Thread Status:
Not open for further replies.