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

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Code:
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      progressbar.Position := progressbar.Position + 1;
      if progressbar.Position > 40 then
        begin
          команда
        end;
    end;
    
    :)
     
  2. A_V

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

    Joined:
    18 Feb 2008
    Messages:
    106
    Likes Received:
    34
    Reputations:
    0
    Как прочитать файл построчно, и при появлении новой строки автоматом занести ее в переменную?

    Спасибо за помощь!
     
  3. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Собираешься периодически обращаться к файлу и опрашивать его на предмет появления новых строк?
     
  4. Exile1985

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

    Joined:
    10 Aug 2006
    Messages:
    124
    Likes Received:
    35
    Reputations:
    1
    Уточни что именно хочешь.
    "появлении новой строки" - если добавиться еще строка или если какая либо из имеющихся изменится?

    "автоматом занести ее в переменную? " - т.е. прога при старте должна проверсять целостность файла и если он изменился уведомлять?
     
  5. A_V

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

    Joined:
    18 Feb 2008
    Messages:
    106
    Likes Received:
    34
    Reputations:
    0
    Мне надо, чтобы переодически(по таймеру), проверять файл на предмет появления новых строк, если новая строка(или строки) появились - все это занести в переменную к примеру dogma
     
  6. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    При запуске считай содержимое вайла в переменную, а затем по таймеру заноси содержимое файла в другую переменную и сравнивай...что сложного?
     
    1 person likes this.
  7. Exile1985

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

    Joined:
    10 Aug 2006
    Messages:
    124
    Likes Received:
    35
    Reputations:
    1
    два TStringList (list1, list2) (по лучше с ним работать чем гемороитс с AssignFile readln и тд и тп), в первый загружаешь один раз файл,
    во второй переодически файл перезагружаешь и по циклу сравниваешь строки
    for i:=0 to list.count-1 do
    begin
    //где list1 "исходный" файл
    if not (list1.string=list2.string) then
    newstring:=newstring+list2.string;
    //newstring твоя переменная с измененными строками
    end;

    Code:
    var
      Form1: TForm1;
      num:integer;
      newstring:string;
      list:TStringList;
    
    //при создании формы
    procedure TForm1.........
    begin
     list.create;
     list.LoadFromFile('c:\test.txt');
    end;
    
    //событие таймера
    procedure TForm1.......
    var
    list2:TStringList;
    i:integer;
    begin
    list2.create;
    list2.loadFromfile('c:\test.txt');
    for i:=0 to list1.count-1 do
    begin
    if not (list1.string[i]=list2.string[i]) then
    newstring:=newstring+list2.string[i];
    end;
    end;
    
     
    #1867 Exile1985, 21 Jul 2008
    Last edited: 21 Jul 2008
  8. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66


    Не легчели просто для хранения данных использовать string'овые переменные?
    их и сравнивать легче и цикл не какой не нужен...
     
  9. Exile1985

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

    Joined:
    10 Aug 2006
    Messages:
    124
    Likes Received:
    35
    Reputations:
    1
    в смысле? я чтот не доконца что ты имеешь в виду :)
    в цикле сравниваются сразу строки.
     
  10. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    нет это понятно, просто если стринговые переменные сделать там и цикл не нужен, и лишние переменные тоже ни к чему....
     
  11. dos999

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

    Joined:
    15 Feb 2008
    Messages:
    137
    Likes Received:
    24
    Reputations:
    0
    De-visible имеет в виду что у объектов типа TStringList есть свойство text и надо сравнивать именно эти совйства

    if list1.text = list2.text then

    и ф топку циклы =)
     
  12. Exile1985

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

    Joined:
    10 Aug 2006
    Messages:
    124
    Likes Received:
    35
    Reputations:
    1
    ну дык задача то стоит какая..."....и при появлении новой строки автоматом занести ее в переменную?" (почему именно в стринговую переменную хз :), ну автор сам знает ), а через text это никак не прокатить
     
    #1872 Exile1985, 21 Jul 2008
    Last edited: 21 Jul 2008
  13. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    если изменится какая либо строка тогда и файл изменится, поэтому мы просто заново скопируем его содержимое вот и все....
     
    2 people like this.
  14. A_V

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

    Joined:
    18 Feb 2008
    Messages:
    106
    Likes Received:
    34
    Reputations:
    0
    спасибо что откликнулись у меня назрел такой вопрос а нельзя сделать так

    AssignFile(f, 'C:\111.txt');
    readln(f, nigma);
    прошло минута
    AssignFile(r, 'C:\111.txt');
    readln(r, dogma);

    if nigma<dogma then
    begin
    бла бла бла
    end
    else
    begin
    дла дла дла
    end
     
  15. GROB_T

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

    Joined:
    3 Mar 2007
    Messages:
    134
    Likes Received:
    50
    Reputations:
    6
    2a_v, твой код сравнит только первые строки файла
     
    1 person likes this.
  16. Hellsp@wn

    Hellsp@wn Elder - Старейшина

    Joined:
    29 Apr 2007
    Messages:
    401
    Likes Received:
    153
    Reputations:
    48
    угу

    A_V - придётся или хранить копию на харде и каждую минуту туда его загонять по новой, предварительно сравнив, или в память читать целиком :)
     
    1 person likes this.
  17. A_V

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

    Joined:
    18 Feb 2008
    Messages:
    106
    Likes Received:
    34
    Reputations:
    0
    Понятно, спасибо за помощь!
     
  18. Hellsp@wn

    Hellsp@wn Elder - Старейшина

    Joined:
    29 Apr 2007
    Messages:
    401
    Likes Received:
    153
    Reputations:
    48
    слип не в секундах принимает параметр, а в миллисекундах, будет так sleep(60 * 1000) - 1 минута :)
     
  19. SUBJECT617

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

    Joined:
    6 Aug 2007
    Messages:
    73
    Likes Received:
    34
    Reputations:
    -2
    Нужна помощь=) Есть страница на которой скрипт принимает пост запрос, обрабатывает его и выплевывает тело страницы. Юзая TcpClient заголовок "200" принимается а cамо тело страницы нет =\

    Code:
    procedure TForm2.Button1Click(Sender: TObject);
    var
    data:String;
    begin
    data:='POST /check_jhsdfk12498lk9284kjf8.php HTTP/1.1'+CRLF;
    data:=data+'Host: www.2proxylife.net'+CRLF+
    		'Content-type: application/x-www-form-urlencoded'+CRLF+
    		'User-Agent: PHP Script'+CRLF+
    		'Connection: Keep-alive'+CRLF+
        'proxys=127.0.0.1:8080%0D%0A200.55.44.1.3:80%0D%0A150.200.0.6:8000&time=5';
        TcpClient1.Open;
        TcpClient1.Sendln(data+CRLF+CRLF,'');
        Memo1.Text:=TcpClient1.Receiveln(CRLF+CRLF);
        Memo2.Text:=Utf8ToAnsi(TcpClient1.Receiveln(''));
        TcpClient1.Close;
    end;
    Заранее спасибо!=)
     
  20. qPhoenix

    qPhoenix Banned

    Joined:
    15 Dec 2005
    Messages:
    87
    Likes Received:
    50
    Reputations:
    8
    2 перевода строки перед постдатой, а длина постдаты считывается из Content-Length.

    Code:
    procedure TForm2.Button1Click(Sender: TObject);
    var
    data,postdata:String;
    begin
    postdata:='proxys=127.0.0.1:8080%0D%0A200.55.44.1.3:80%0D%0A150.200.0.6:8000&time=5';
    data:='POST /check_jhsdfk12498lk9284kjf8.php HTTP/1.1'+CRLF+
          'Host: www.2proxylife.net'+CRLF+
    		  'Content-type: application/x-www-form-urlencoded'+CRLF+
    		  'Content-Length: '+inttostr(length(postdata))+CRLF+
    		  'User-Agent: PHP Script'+CRLF+
    		  'Connection: Keep-alive'+CRLF+CRLF+
    		  postdata;
        
        TcpClient1.Open;
        TcpClient1.Sendln(data);
        Memo1.Text:=TcpClient1.Receiveln(CRLF+CRLF);
        Memo2.Text:=Utf8ToAnsi(TcpClient1.Receiveln(''));
        TcpClient1.Close;
    end;
    
     
Thread Status:
Not open for further replies.