[ 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. OneKey

    OneKey New Member

    Joined:
    4 Sep 2010
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Можно простенький пример клиент-сервера на Winsock
    ( чтобы просто осуществлялся конект, без отсылки сообщений и тд)?
    плз если кому не сложно.
     
  2. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    _http://forum.sources.ru/index.php?showtopic=88367
     
  3. Mr.Crazy

    Mr.Crazy New Member

    Joined:
    12 Aug 2010
    Messages:
    19
    Likes Received:
    1
    Reputations:
    0
    Отправка сообщения по net send
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var I: Integer;
    begin
      for i:=0 to 10 do
      begin
      winExec('net send 43-1 h1 apple;) by Ghostly(TM)', SW_SHOW);
      sleep(100);
      end;
    end;
    Меня интересует как его переделать да хотябы в какую сторону смотреть, что бы данные вместо "43-1"(имя компьютера) и "h1 apple;)"(сообщения) можно было вводить из двух полей Edit.
     
  4. Vlad3d

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

    Joined:
    18 Jan 2008
    Messages:
    47
    Likes Received:
    54
    Reputations:
    -1
    Code:
    winExec('net send'+Edit1.text+''+Edit2.text+' ;) by Ghostly(TM)', SW_SHOW);
    ты об этом что ли?
     
  5. finnk

    finnk New Member

    Joined:
    1 Jul 2010
    Messages:
    30
    Likes Received:
    1
    Reputations:
    0
    Всем привет.Вот задание: Написать функцию, генерирующую случайные простые числа в диапазоне от a до b, используя квадратичный конгруэнтный метод.
    Вот мой код:
    Code:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, XPMan, StdCtrls;
    
    type
      TForm1 = class(TForm)
        XPManifest1: TXPManifest;
        Edit1: TEdit;
        Button1: TButton;
        Memo1: TMemo;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
      RandNum: integer;
    
    implementation
    
    {$R *.dfm}
    
    function SimpleNumber( number:integer):boolean;//проверка числа на простоту
    var
      i:integer;
    begin
      Result := true;
      if( number = 1 ) then Exit;
      for i := 2 to (number - 1) do
        if( number mod i = 0 ) then begin
          Result := false;
          Break;
        end;
    end;
    
    function QuadRand(limit: integer): integer;//генерация случайный чисел заданным методом
    var
      a, c, d, m: integer;
    begin
      m:= 2179;
      a:= 47;
      c:= 49;
      d:= 12;
    
      while(true) do
      begin
        RandNum:= (d*SQR(RandNum) + a*RandNum + c) mod m;
        if (RandNum <= limit)  then Break;
      end;
    
      Result:= RandNum;
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      if SimpleNumber(QuadRand(StrToInt(Edit1.Text))) then
      Memo1.Text:= Memo1.Text+IntToStr(QuadRand(StrToInt(Edit1.Text))) + ' ';
    end;
    
    end.
    Вот метод, если надо:
    Code:
    Линейный конгруэнтный метод — не единственный метод, использующийся для выработки равномерно распределенных случайных чисел с помощью ЭВМ.
    Линейный конгруэнтный метод можно обобщить, превратив его в квадратичный конгруэнтный метод:
    Xn+1=(dXn2+aXn+c) mod m.
    Необходимые и достаточные условия для a, c и d, такие, чтобы данная последовательность имела бы максимальный период m, устанавливаются теоремой 2.  
    Теорема 2. Квадратичная конгруэнтная последовательность имеет период длины m тогда и только тогда, когда выполняются следующие условия:
    1)	c и m — взаимно простые числа;
    2)	d и a кратны p — всем нечетным простым делителям m;
    3)	d — четное и d тождественно равно остатку от деления a–1 на 4, если m кратно 4, d тождественно равно остатку от деления a–1 на 2, если m кратно 2;
    
    Проблемы собственно в следующем:
    1)Если проверять число на простоту непосредственно из текстбокса то все норм, а если как в коде-то не работает, то есть рандомное число.
    2)Период случайных чисел при d, a, c, m как в код маленький,чтобы период был равен m надо чтобы эти условия выполнялись, как бы подобрать d, a, c, m, чтобы выполнялись услоивия
     
  6. ColdLikeIce

    ColdLikeIce New Member

    Joined:
    12 Apr 2010
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Написал программу, которая формирует кучу различных нужных данных, которые в финале нужно записать в mysql базу.
    Потыркался с dbgrid и понял, что без доп материалов мне его не осилить.

    Подскажите, плиз, что лучше почитать по работе dbgrid и его работе с mysql базе. На русском.
    В инете нашел только какие-то отдельные примеры разных функций - на общее понимание работы они никак не влияют((
     
  7. Nizhegorodets

    Nizhegorodets Member

    Joined:
    21 Mar 2009
    Messages:
    80
    Likes Received:
    66
    Reputations:
    9
    Почитай отдельно про dbgrid и mysql. Потом соедини воедино сам. Врядли есть готовые статьи в инете, только частные вопросы.
     
  8. SeNaP

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

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    Как записать значение в реестр по умолчанию?
    Разобрался :)
    Registry.WriteString('','Значение');
     
    #6788 SeNaP, 10 Sep 2010
    Last edited: 10 Sep 2010
  9. Timon132009

    Timon132009 Member

    Joined:
    7 Jun 2009
    Messages:
    137
    Likes Received:
    19
    Reputations:
    0
    Имеется код для парсинга страницы:
    Code:
    Copy(s, pos('<h1>', s) + 4, pos('</h1>', s) - pos('<h1>', s) -4);
    Но он парсит только одну строку.
    А на сайте много строк заключено в <h1></h1>
    Как сделать что бы парсились все строки?
     
  10. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    http://code.ctrl-v.it/code.php?id=560
    Если что-то просите то хотя бы пример давайте на чем проверять. По-этому толком не затестил но вроде должно работать.
    Внимание: функция возвращает объект TStrings, если тег не найден в исходной строке вернет nil потому проверяй на результат а если найдено то после того как поработаешь с объектом освобождай его
    т.е. примерно так:
    Примечание: код не оптимизирован, это всего лишь пример. Если функция будет использоваться часто то оптимизируешь сам.
     
  11. Nizhegorodets

    Nizhegorodets Member

    Joined:
    21 Mar 2009
    Messages:
    80
    Likes Received:
    66
    Reputations:
    9
    Спарсил, удалил эту строку. И все в цикл любой.
     
  12. Artist

    Artist Member

    Joined:
    10 Jul 2010
    Messages:
    89
    Likes Received:
    5
    Reputations:
    0

    Вот код, только с моими переменными.
    Первый пример в цикле While
    Code:
    while  (pos('club',respone)<>0) do
    begin
    np:=pos('club',respone)+4;
    gid:=copy(respone,np,15);
    np1:=pos(#39,gid);
    Delete(gid,np1,15);
    Form1.Memo4.Lines.Add(gid);
    respone:=copy(respone,np+100,length(respone));
    end;
    
    Второй пример в цикле Repeat-Until
    Code:
    repeat
    pos2:=pos('&',ssilka)+1;
    Delete(param,pos2-1,20);
    Form1.Memo3.Lines.Add(param);
    ssilka:=copy(ssilka,pos2,length(ssilka)-pos2);
    until  (pos('&',ssilka)=0);
    
    Для 100% работы кода, нужен твой текст и что именно надо спарсить
     
  13. Timon132009

    Timon132009 Member

    Joined:
    7 Jun 2009
    Messages:
    137
    Likes Received:
    19
    Reputations:
    0
    Вот мой код:
    Code:
    unit Parser;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
      IdHTTP, StdCtrls;
    
    type
      TForm1 = class(TForm)
        mmo1: TMemo;
        btn1: TButton;
        idhtp1: TIdHTTP;
        procedure btn1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
      s : string;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.btn1Click(Sender: TObject);
    begin
    s := IdHTP1.Get('http://steamcommunity.com/id/18810151/games?tab=all');
    Mmo1.Lines.Text := Copy(s, pos('<h4>', s) + 4, pos('</h4>', s) - pos('<h4>', s) -4);
    end;
    
    end.
    Нужно спарсить список игр, но я так и не понял как в цикл запихнуть.
     
  14. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Раз не знаете, как цикл организовать, то явно нужно начать с чего то проще, чем парсер.
     
  15. Vlad3d

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

    Joined:
    18 Jan 2008
    Messages:
    47
    Likes Received:
    54
    Reputations:
    -1
    в вар вписать это
    Code:
    var
    a,nachalo,konec,i:integer;
    gamename:string;
    s:TStringList;
    
    Code:
    s:=TStringList.create;
    s.text := IdHTTP1.Get('http://steamcommunity.com/id/18810151/games?tab=all');
    i:=0;
    while pos('rgGames', s[13+i])>0 do
    begin
    nachalo:=pos('= ', s[13+i]);
    konec:=pos(';',s[13+i]);
    gamename:=copy(s[13+i], nachalo+3,konec-2);
    memo1.lines.add(gamename);
    i:=i+1;
    end;
    
    писал прямо тут, так что могут быть ошибки
     
    #6795 Vlad3d, 12 Sep 2010
    Last edited: 12 Sep 2010
  16. Timon132009

    Timon132009 Member

    Joined:
    7 Jun 2009
    Messages:
    137
    Likes Received:
    19
    Reputations:
    0
    Всем спасибо за помощь, сделал так :
    Code:
    begin
    s := IdHTP1.Get('http://steamcommunity.com/id/18810151/games?tab=all');
    
    while Pos('<h4>',s)<>0 do  begin
    a:= Copy(s, pos('<h4>', s) + 4, pos('</h4>', s) - pos('<h4>', s) -4);
    Delete(s,Pos('<h4>',s),Pos('</h4>',s)-Pos('<h4>',s)+1);
    mmo1.Lines.Add(a);
    end;
    end;
     
  17. Vlad3d

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

    Joined:
    18 Jan 2008
    Messages:
    47
    Likes Received:
    54
    Reputations:
    -1
    зря ты так сделал....мало ли что будет в <h4></h4>
    ....
     
  18. AGIMgal

    AGIMgal New Member

    Joined:
    9 Jun 2010
    Messages:
    66
    Likes Received:
    0
    Reputations:
    0
    мне тут задачки нужно решить с длгорифмами, а через калькулятор каждый раз тыкать лент...
    карочь как на паскале логорифмы вводить с основанием 2?
     
  19. $Robin

    $Robin Member

    Joined:
    25 Jun 2010
    Messages:
    47
    Likes Received:
    5
    Reputations:
    0
    не знаю, но можно воспользоваться тем, что log2(X) = ln(X)/ln(2)
     
  20. $Robin

    $Robin Member

    Joined:
    25 Jun 2010
    Messages:
    47
    Likes Received:
    5
    Reputations:
    0
    Помогите хотя бы с алгоритмом :(
     
    #6800 $Robin, 13 Sep 2010
    Last edited: 13 Sep 2010
Thread Status:
Not open for further replies.