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

    Helium New Member

    Joined:
    6 Jan 2010
    Messages:
    22
    Likes Received:
    3
    Reputations:
    0
    Разобрался
     
    #7901 Helium, 1 Mar 2011
    Last edited: 7 Apr 2011
  2. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Перешел на Delphi XE. Возникла проблема с UrlEncode. Раньше использовал такую функцию:

    PHP:
    function Convert(sstring): string;
    var
      
    i,jInteger;
    const
      
    rus='АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя';
      
    web='%C0%C1%C2%C3%C4%C5%A8%C6%C7%C8%C9%CA%CB%CC%CD%CE%CF%D0%D1%D2%D3%D4%D5%D6%D7%D8%D9%DC%DB%DA%DD%DE%DF%E0%E1%E2%E3%E4%E5%B8%E6%E7%E8%E9%EA%EB%EC%ED%EE%EF%F0%F1%F2%F3%F4%F5%F6%F7%F8%F9%FC%FB%FA%FD%FE%FF';
    begin
      
    for := 1 to Length(s) do
      if (
    pos(s[j],rus)>0then begin
        result
    :=result+copy(web,3*(pos(s[j],rus)-1)+1,3);
      
    end
      
    else result:=result+s[j];
    end;
    По идее при вводной строке = 'Тест' , я должен получить : %d0%a2%d0%b5%d1%81%d1%82, а получаю : '%D2%E5%F1%F2'.

    Наверное проблема в том, что щас строки Unicode стали. Как это решить?
     
  3. Chrome~

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

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Замени в своей функции все строки с типом string на тип AnsiString.
     
  4. arnis

    arnis Member

    Joined:
    30 Jan 2011
    Messages:
    280
    Likes Received:
    23
    Reputations:
    0
    Если меня память не подводит то в ХЕ индя сама конвертирует строку как нужно.

    А еще можно Pos на AnsiPos заменить
     
  5. sidapas23

    sidapas23 New Member

    Joined:
    13 Nov 2010
    Messages:
    88
    Likes Received:
    2
    Reputations:
    -3
    Что за ошибку выдает?
     
  6. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Я использую синапс.
    Ни один способ не помог. Результат все тот же. :\

    P.S Парни, очень срочно нужно...Видел функцию UnicodeToUtf8..то блин так и не понял, как ей пользоваться :confused:
     
    #7906 fenixelite, 1 Mar 2011
    Last edited: 1 Mar 2011
  7. Chrome~

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

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Попробуй дополнительно заменить rus= на rus: AnsiString = и web= на web: AnsiString =. Также нужно записывать строку запроса самостоятельно (для POST) в StreamSynapse есть свойство Document, в него и надо самому записывать) и тогда уже отправлять.
    Здесь свои сообщения можно самому удалять...
     
    1 person likes this.
  8. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Неа..вообще никак.. все тот же результат.
    А что насчет функции UnicodeToUTF8 думаешь? Никак не пойму, как она работает.
     
  9. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    fenixelite, попробуй как-то так, под UrlEncode сам допили =)
    Code:
    function BinToHexStr(Bin: Pointer; nSize: Cardinal): String;
    var
      i: Cardinal;
      bt: Byte;
    const
      Hex = '0123456789abcdef';
      EngNumChar = ['A'..'z','0'..'9'];
    begin
      Result:= '';
      for i:= 0 to nSize - 1 do begin
        bt:= PByte(Ptr(Cardinal(Bin) + i))^;
        if (Char(bt) in EngNumChar) then Result:= Result + Char(bt) else
          Result:= Result + '%' + Hex[bt shr $4 + 1] + Hex[bt and $0f + 1]
      end;
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      s,ws: AnsiString;
    begin
      s:= Edit1.Text;
      ws:= Utf8Encode(s);
      Edit2.Text:= BinToHexStr(Pointer(ws), Length(ws));
    end;
    
     
    #7909 alexey-m, 1 Mar 2011
    Last edited: 1 Mar 2011
    1 person likes this.
  10. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Спасибо. Уже сам "ручками" сделал.)
    Но эту функцию возьму на заметку!)
     
  11. SwordMaster

    SwordMaster Banned

    Joined:
    12 Aug 2009
    Messages:
    98
    Likes Received:
    9
    Reputations:
    0
    В делфи понимаю плохо ,сделал фейка, но только дизайн.
    Хочу что б фейк проверял пароли и отправлял на почту,но после валидного акк, писал сообщение " сервер программы перегружен "
    Кто сможет бесплатно сделать такое ?
     
  12. sidapas23

    sidapas23 New Member

    Joined:
    13 Nov 2010
    Messages:
    88
    Likes Received:
    2
    Reputations:
    -3
    procedure TForm1.BitBtn3Click(Sender: TObject);
    var pas,a,C,del:string;
    begin
    pas:='Pascal';
    a:='ASM';
    C:='C++';
    del:='Delphi 7.0';
    if Label8.Caption='Разработка' then // за разработка надо написать переменные все только пишу переменную а проверяется имя переменной как сделать что бы проверялась строка в переменной?
    Form5.Show
    else
    begin
    ShowMessage('Сначала установите среду разработки!')
    end;
    end;
     
  13. RAINUR

    RAINUR New Member

    Joined:
    24 May 2010
    Messages:
    151
    Likes Received:
    0
    Reputations:
    0
    Изучаю drag-and-drop
    Создал Image1, Shape1.
    Shape1 перемещается по Form1 ногрмально, но по image1 как то криво, я курсор в одном месте отпускаю, а shape1 появляется в лругом месте:)
    Может кто знает как исправить ..
    Code:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;
    
    type
      TForm1 = class(TForm)
        Image1: TImage;
        Shape1: TShape;
        procedure Image1DragOver(Sender, Source: TObject; X, Y: Integer;
          State: TDragState; var Accept: Boolean);
        procedure Image1DragDrop(Sender, Source: TObject; X, Y: Integer);
        procedure FormDragDrop(Sender, Source: TObject; X, Y: Integer);
        procedure FormDragOver(Sender, Source: TObject; X, Y: Integer;
        State: TDragState; var Accept: Boolean);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    
    
    
    
    procedure TForm1.Image1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    begin
    Accept :=true;
    end;
    
    procedure TForm1.Image1DragDrop(Sender, Source: TObject; X, Y: Integer);
    begin
    if Source.ClassName = 'TShape' then
       begin
          TShape(Source).Top:= Y;
          TShape(Source).Left:= X;
       end;   
    end;
    
    procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
    begin
    if Source.ClassName = 'TShape' then
       begin
          TShape(Source).Top:= Y;
          TShape(Source).Left:= X;
       end;
    end;
    
    procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    begin
    Accept :=true;
    end;
    
    
    
    end.
    
    
     
  14. RAINUR

    RAINUR New Member

    Joined:
    24 May 2010
    Messages:
    151
    Likes Received:
    0
    Reputations:
    0
    Исправил:)
    Code:
    procedure TForm1.Image1DragDrop(Sender, Source: TObject; X, Y: Integer);
    begin
    if Source.ClassName = 'TShape' then
       begin
          TShape(Source).Top:= Y+136;
          TShape(Source).Left:= X;
       end;   
    end;
    
     
  15. RAINUR

    RAINUR New Member

    Joined:
    24 May 2010
    Messages:
    151
    Likes Received:
    0
    Reputations:
    0
    Code:
    procedure TForm1.Image1DragDrop(Sender, Source: TObject; X, Y: Integer);
    begin
    if Source.ClassName = 'TShape' then
       begin
          TShape(Source).Top:= Y+136;
          TShape(Source).Left:= X;
       end;   
    end;
    
    Тут у меня идет просто порверка на TShape, а как узнать, переместили Shape1 или Shape2?:)
     
  16. sidapas23

    sidapas23 New Member

    Joined:
    13 Nov 2010
    Messages:
    88
    Likes Received:
    2
    Reputations:
    -3
    никто мне не подскажет
     
  17. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    Code:
    TShape(Sender).Name;
    
     
  18. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    sidapas23, извиняюсь конечно, но на твой вопрос
    никто, скорее всего, ответа не даст, научись внятно задавать вопросы!
     
  19. DooD

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

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    ага,я те говорил:)
     
  20. sidapas23

    sidapas23 New Member

    Joined:
    13 Nov 2010
    Messages:
    88
    Likes Received:
    2
    Reputations:
    -3
    да я уже разобрался
     
Thread Status:
Not open for further replies.