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

    SkyLine32 Member

    Joined:
    1 Mar 2009
    Messages:
    144
    Likes Received:
    22
    Reputations:
    2
    Скажите, как из StringGrid вывести в Label все Cells по порядку и с промежутком времени? к примеру: сперва Cells[2,1] показали в Label, прошло 5 секунд, потом Cells[2,2] и т.д...
     
    #6001 SkyLine32, 27 Apr 2010
    Last edited: 27 Apr 2010
  2. h(f)ucker

    h(f)ucker Member

    Joined:
    11 Jul 2009
    Messages:
    81
    Likes Received:
    84
    Reputations:
    32
    SkyLine32
    Используй компонент таймер, событие OnTimer(свойство интервал = 5000):
    Code:
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    j:=j+1;
    if j = n then
     begin
      i := i+1;
      j:=1;
     end;
    Label1.caption:=StringGrid[i,j];
    end;
    
    Или можно еще через Sleep(time);
    но программа будет "подвисать"
     
    #6002 h(f)ucker, 27 Apr 2010
    Last edited: 27 Apr 2010
  3. [stranger]

    [stranger] Member

    Joined:
    2 Feb 2010
    Messages:
    167
    Likes Received:
    29
    Reputations:
    4
    изват конечно, но видимость работы формы сохраняется.. :)
    Code:
      for i:=0 to 100 do
        begin
          Application.ProcessMessages;
          sleep(100);
        end;
    
     
  4. SkyLine32

    SkyLine32 Member

    Joined:
    1 Mar 2009
    Messages:
    144
    Likes Received:
    22
    Reputations:
    2
    я правильно понял?
    PHP:
    procedure TForm1.Timer1Timer(SenderTObject);
    var
    jnkinteger;
    begin
    j
    :=j+1;
    if 
    n then
     begin
      k 
    := k+1;
      
    j:=1;
     
    end;
    Label1.caption := StringGrid1.Cells[k,j];
    end;
    если да, то это не работает.
     
  5. denjf

    denjf Member

    Joined:
    12 Nov 2008
    Messages:
    88
    Likes Received:
    12
    Reputations:
    -1
    Не сработало ((
     
  6. RumShun

    RumShun Member

    Joined:
    27 Oct 2008
    Messages:
    283
    Likes Received:
    75
    Reputations:
    6
    ещебы это работало
    j:=j+1;
    if j = n then
    и j, и n, и k локальные нигде не определенные переменные, и может я и туплю но смысл кода невкурил ((
     
    1 person likes this.
  7. SkyLine32

    SkyLine32 Member

    Joined:
    1 Mar 2009
    Messages:
    144
    Likes Received:
    22
    Reputations:
    2
    пример решён, спасибо RumShun
    PHP:
    procedure TForm1.Timer1Timer(SenderTObject);
    begin
      label1
    .Caption:=UrlLIst.Cells[2,j];
      
    inc(j);
      
    application.ProcessMessages;
    end;
     
  8. iGlass

    iGlass New Member

    Joined:
    14 May 2009
    Messages:
    86
    Likes Received:
    1
    Reputations:
    0
    Люди добрые! Помогайте плиз) А то я скоро на отличненько...

    Задача такая нужно написать Клиент\Сервер на Winsock!

    Функционал придельно прост! Клиент отправляет текст, сервер отображает его в Мемо...

    Вот я тут навая немного. Но ничё не выходит...

    Code:
    WSAStartup(MakeWord(2,2),WSA);
    
    hSocket:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
     hAddr.sin_family:=AF_INET;
     hAddr.sin_port:=htons(wPort);
     hAddr.sin_addr.S_addr:=inet_addr(Pchar(ipEdit.Text));
     bind(hSocket,hAddr,Len);
     listen(hSocket,len);
     while buffer = '' do // Вот тут всё виснет... 
     recv(hSocket,buffer,1024,0);
     Application.ProcessMessages;
     DisplayLog.Lines.Add('----------------');
     DisplayLog.Lines.Add(buffer);
     DisplayLog.Lines.Add('----------------');
    
    Может я в клиете косячу? Отправляю буфер функцией Send. в msdn не отправлять.. уже был и не раз.. И как разобратся с циклом чтоб он не вешал программу?

    Заранее Охринительное спасибо!
     
  9. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    В винсок не специалист, но тут понятно что buffer = '' и прога зацикливается.
    К тому же я всегда думал что buffer должен быть числовым, ошибаюсь?
     
  10. iGlass

    iGlass New Member

    Joined:
    14 May 2009
    Messages:
    86
    Likes Received:
    1
    Reputations:
    0
    While buffer='' do - Пока буффер пустой мы делаем.. Но как сделать чтоб она не зацикливалась? мб sleep() поможет?
     
  11. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    http://pastebay.com/95742 пример сервера
    Там где комменты можешь перекодировать обратно на русский тут: http://www.artlebedev.ru/tools/decoder/
    Если только в отдельном потоке, ил ив консольном приложении, в противном случае будет виснуть интефейс
     
    #6011 GhostOnline, 27 Apr 2010
    Last edited: 27 Apr 2010
  12. iGlass

    iGlass New Member

    Joined:
    14 May 2009
    Messages:
    86
    Likes Received:
    1
    Reputations:
    0
    А как в потоке замутить? Знаю что поток TThread.

    Создаю его c CreateSuspend:=True;

    Но как поместить в него цикл?

    мб вот так?

    Thread.Resume;
    while buffer='' do
    recv()
    Thread.Terminate; ???
     
  13. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Имхо тебе не стоит в данном случае заморачиваться пока с потоками, потому что проблема скорее всего в неправильной реализации работы клиента или сервера

    Вообще, когда создаешь Thread Object в дельфи то создается заготовка, код потока вставляешь в тело процедуры Execute.
    А использовать так:
    var
    thread : TmyThread;
    begin
    thread := TMyThread.Create(false);
    end;
     
    #6013 GhostOnline, 27 Apr 2010
    Last edited: 27 Apr 2010
  14. iGlass

    iGlass New Member

    Joined:
    14 May 2009
    Messages:
    86
    Likes Received:
    1
    Reputations:
    0
    Спасибо, вроде разобрался.. Попытаюсь всё таки на GUI реализовать...
     
  15. patcher

    patcher Banned

    Joined:
    15 Dec 2009
    Messages:
    190
    Likes Received:
    37
    Reputations:
    10
    Вот очень хорошая статья по потокам, сам с нее начинал:
    http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1370
     
  16. stepashka_

    stepashka_ Мотоциклист

    Joined:
    9 Nov 2009
    Messages:
    1,022
    Likes Received:
    423
    Reputations:
    234
    Подскажите))
    Дельфи
    Есть ссылка http://login.vk.com/?act=login&email=мыло&pass=пасс&expire=&vk=
    как сделать что бы при нажатии на кнопку из memo бралась строчка ololo.mail.ru:password разделялась и подставлялась в ссылку. На местро мыло нужно что бы вставало ololo.mail.ru на место пасс password.
    Спасибо.
     
  17. TrueBit

    TrueBit Member

    Joined:
    21 Nov 2009
    Messages:
    71
    Likes Received:
    19
    Reputations:
    4
    var
    log,pass: string;
    begin
    log:=copy(memo1.lines[0],1,pos(':',memo1.lines[0])-1);
    pass:=copy(memo1.lines[0],pos(':',memo1.lines[0])+1,20);
    http://login.vk.com/?act=login&email='+log+'&pass='+pass+'&expire=&vk=
     
    1 person likes this.
  18. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Писал прям тут, но вроде должно работать...

    PHP:
    var
     
    s,pass,mail:string;
     
    i:integer;
    begin
     i
    :=pos(':',memo.lines[1]);
     
    mail:=copy(memo.lines[1],1,i-1);
     
    pass:=Copy(memo.Lines[1],i+1,length(memo.lines[1]);
     
    s:='http://login.vk.com/?act=login&email='+mail+'&pass='+pass+'&expire=&vk=';
    end;
     
    2 people like this.
  19. stepashka_

    stepashka_ Мотоциклист

    Joined:
    9 Nov 2009
    Messages:
    1,022
    Likes Received:
    423
    Reputations:
    234
    Дельфи
    есть код
    Как сделать что бы после успешной авторизации, мыло:пасс выводилось в мемо2 а если авторизация не прошла выводилось в мемо3.
     
  20. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    А что сложного то? Вместо ShowMessage делай что-то вроде этого:
    Code:
    memo1.lines.add(log + ';' + pass);
     
Thread Status:
Not open for further replies.