[ 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
    Привет всем!

    PHP:
    var
     
    PostDataTStringList;
    begin
        PostData 
    := TStringList.Create;
        
    PostData.Add('......................');
        
    IdHTTP1.Post('http://.................'PostData);
        
    end;
    Такой вопрос. У меня строка в поле PostData больше 255 символов и при запросе получаю "String literals may have at most 255 elements". Как решить эту проблему???
     
    #8761 SkyLine32, 14 Jan 2012
    Last edited: 14 Jan 2012
  2. Lest

    Lest New Member

    Joined:
    12 Jan 2012
    Messages:
    8
    Likes Received:
    1
    Reputations:
    0
    Проблема скорей всего на серверной части
     
  3. SkyLine32

    SkyLine32 Member

    Joined:
    1 Mar 2009
    Messages:
    144
    Likes Received:
    22
    Reputations:
    2
    вы мне?
    прошу прощения я ошибся. не "HTTP/1.1 404 Not Found" а "String literals may have at most 255 elements. Даже не компилируется.
     
  4. Chrome~

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

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Самый простой способ: разбить на строчки, длина которых меньше или равняется 255 символам и соединить их:
    Code:
    PostData.Add('........' + '........' + '......');
     
    1 person likes this.
  5. SkyLine32

    SkyLine32 Member

    Joined:
    1 Mar 2009
    Messages:
    144
    Likes Received:
    22
    Reputations:
    2
    Теперь "HTTP/1.1 404 Not Found". Другие методы есть?
     
  6. Chrome~

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

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Эта проблема не имеет никакой связи с предыдущей. Если "HTTP/1.1 404 Not Found", значит делаете запрос на несуществующую страницу, скорее всего.
     
  7. SkyLine32

    SkyLine32 Member

    Joined:
    1 Mar 2009
    Messages:
    144
    Likes Received:
    22
    Reputations:
    2
    PHP:
    var
       
    PostData:TStringList;
       
    sstring;
    begin

        PostData 
    := TStringList.Create;
        
    PostData.Add('{"f":["vk123277180"],"i":"vk123277180","k":"0dd818b2dc13aa11b5990788c4b6f1af","l":"","s":{"d":"Dalas1;Dalas2;NaN;ru_RU;0;;","i":"vk123277180","l":"ru-RU","n":"Dalas1 Dalas2",'+'"u":"http://cs303414.vkontakte.ru/u123277180/a_0e266b33.jpg","x":"NaN"},"u":"vk123277180","v":94,"w":38}');
        
    := IdHTTP1.Post('http://209.190.120.218/Geo/Segment01/segment.ashx'PostData);
        
    Memo1.Lines.Add(s);

        
    end;
    в мемо ничего не приходит, но если смотреть в сниффере HTTP Analyzer, то во вкладке Responce Content находится текст который мне нужен. Как его вытянуть из запроса? Помогите!
     
    #8767 SkyLine32, 15 Jan 2012
    Last edited: 15 Jan 2012
  8. Lest

    Lest New Member

    Joined:
    12 Jan 2012
    Messages:
    8
    Likes Received:
    1
    Reputations:
    0
    Попробуйте вывести в мемо напрямую
     
  9. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Код ответа сервера? если отличный от 2хх, то в переменную ничего и не прийдет.
    Если код ответа 3хх, то выручит idHTTP.HandleRedirects:=True;
     
  10. SkyLine32

    SkyLine32 Member

    Joined:
    1 Mar 2009
    Messages:
    144
    Likes Received:
    22
    Reputations:
    2
    Посмотрите исходник http://zalil.ru/upload/32497929
    Там в папке есть файл сниффера.
     
    #8770 SkyLine32, 15 Jan 2012
    Last edited: 15 Jan 2012
  11. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    idHTTP.Request.ContentType нужно задать JSON (как это делается - гуглите)
    и скорее всего из-за этого сервер Вам отвечает "400 - Bad Request"
    Хотя у вас в логе сервер ответил 200. Странно....
     
  12. SkyLine32

    SkyLine32 Member

    Joined:
    1 Mar 2009
    Messages:
    144
    Likes Received:
    22
    Reputations:
    2
    400 - Bad Request нет. проблема в том что в мемо не то приходит. вы файл сниффера смотрели? там во вкладке Responce Content приходит код, а не в Posd Data как нужно.
     
  13. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Ответ приходит в формате JSON (почитайте про формат, есть готовые классы практически для всех ЯП)
    Затестить Ваше ПО не смог из-за ответа "400" т.к. либо у меня не актуальны данные, которые вы в постдата суете, либо еще что-то.
    Попробуйте все же поставить Request.ContentType в JSON т.к. данные вы отправляете именно в этом формате
    P.S. а вообще поставьте брейкпоин и поглядите записывается ли ответ сервера в переменную.
     
    #8773 xophet, 15 Jan 2012
    Last edited: 15 Jan 2012
    1 person likes this.
  14. Rastamanka

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

    Joined:
    26 Nov 2008
    Messages:
    429
    Likes Received:
    11
    Reputations:
    7
    Подскажите использую для скрывания в трей компонент TrayIcon идущий в комплекте Delphi 7 Lite Full.

    Закрытие происходит при нажатии на кнопку минимизации вот таким кодом
    Code:
    procedure TForm1.WMSysCommand;
    begin
      if Msg.CmdType = SC_MINIMIZE
        then
        begin
          trycn1.Visible := True;
          Application.MainForm.Hide;
                
        end;
      inherited; 
    end;
    
    Открытие происходит вот таким кодом
    Code:
    procedure TForm1.trycn1Click(Sender: TObject);
    begin
      trycn1.Visible := False;
      Application.MainForm.Show;
    end;
    
    
    Все хорошо но есть пару вопросов.
    1) При сворачивании в трей остается иконка рядом с панелью быстрого запуска там где висят все запущенные приложения(панель задач). Причем при клике на ней ничего не происходит. Разворачивание возможно только при клике на иконку в трее. Как убрать эту иконку из области панели задач? Кстати если выполнять те же действия но не в обработчике WMSysCommand то иконка с панели задач скрывается.
    2) Как меню Poup сделать напротив трея?
     
    #8774 Rastamanka, 16 Jan 2012
    Last edited: 16 Jan 2012
  15. shadowrun

    shadowrun Banned

    Joined:
    29 Aug 2010
    Messages:
    842
    Likes Received:
    170
    Reputations:
    84
    Ось какая? Хз как ты там скрываешь, только что на 7 попробовал:
    Application.ShowMainForm := false;
    Form1.Hide;
    работает на ура...
    В обработчик WM_LBUTTONDBLCLICK иконки, ну или какой там тебе нужен...
    var
    P: TPoint;
    begin
    GetCursorPos(P);
    PopupMenu1.Popup(P.x,P.y);
    end;
    Ах и да, нах компоненты... Shell_NotifyIcon в помощь...
     
  16. MTV

    MTV New Member

    Joined:
    16 Feb 2011
    Messages:
    180
    Likes Received:
    2
    Reputations:
    0
    Ребят,задался вопросом.Как можно на дельфи реализовать так, что бы форма крутилась на 360 градусов.То есть,что то типо линейки.
     
  17. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Похоже что прийдется рисовать свои компоненты т.к. по умолчанию компоненты не перевернуть :)
    Которые в зависимости от параметра "угол" будут рисоваться по-другому
    т.е. переопределять метод Paint
     
  18. LocKeD132

    LocKeD132 New Member

    Joined:
    27 Nov 2011
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    Помогите составить программу которая из массива, состоящего из трёх символов (X,Y,Z), длинной от 1 до 90 символов, определит символ который повторялся дольше всего, и символ который повторялся чаще всего. Так же стоит учесть, что символы могут одинаково часто или одинаково долго повторятса.
    Буду весьма благодарен за помощ.
     
    #8778 LocKeD132, 17 Jan 2012
    Last edited: 17 Jan 2012
  19. muip

    muip New Member

    Joined:
    1 Sep 2011
    Messages:
    45
    Likes Received:
    4
    Reputations:
    0
    Собственно есть следующая процедура:

    Code:
    [b]procedure[/b] TForm1.Button1Click(Sender: TObject);
    [b]var[/b] StrPage, sw:[b]string[/b];dw:[b]string[/b];rw:[b]string[/b];fw:[b]string[/b];
    Data:TstringList;
    [b]begin[/b]
    Button1.Enabled:=False;
    idhttp1.HandleRedirects:=true;
    rw:=Edit3.Text;
    fw:=Edit4.Text;
    Data:=TstringList.Create;
    Data.Add('num=1');
    Data.Add('list_name=text');
    Data.Add('author_name='+Edit1.Text;);
    Data.Add('send=1');
    Data.Add('act=mail');
    Data.Add('subject='+Edit2.Text;);
    Data.Add('priority=3');
    Data.Add('body='+fw);
    Data.Add('day=0');
    Data.Add('h=0');
    Data.Add('min=0');
    Data.Add('templates=0');
    StrPage:=idhttp1.Post(rw, Data);
    Data.Free;
    [b]end;[/b]
    

    Проблема в том, что при вводе русских слов в поля, постятся они на скрипт в таком виде:
    ?????????????''?????????????

    Понимаю, что проблема в кодировке, у скрипта она utf-8. Прошу помощи, как можно решить данную проблему, ибо нужно постить именно русские слова :(
     
  20. Chrome~

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

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Русские символы отправляй в таком виде:
    Code:
    URLEncode(AnsiToUtf8(string_to_send));
    URLEncode можешь найти в Google.
     
Thread Status:
Not open for further replies.