wsprintf delphi

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by s0l_ir0n, 19 Mar 2009.

  1. s0l_ir0n

    s0l_ir0n Active Member

    Joined:
    14 Mar 2009
    Messages:
    399
    Likes Received:
    144
    Reputations:
    18
    Возникла проблема. Имеется строка 18 символов, нужно сделать вывод этой строки в формате xxx-xxx-xxx-xxx-xxx-xxx, немогу понять как это сделать, подскажите.
    Я использую
    const
    FormatStr = '%d-%d-%d-%d-%d-%d';
    wvsprintf(PChar(finishkey), FormatStr,PChar(@finishkey));
    Но выходит совсем не то, что нужно.
     
    1 person likes this.
  2. slesh

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

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Code:
    const
     FormatStr = '%d-%d-%d-%d-%d-%d';
    var
     buf:array[0..255] of char;
     param:array[0..5] of integer;
    begin
     param[0]:=10;
     param[1]:=2;
     param[2]:=3;
     param[3]:=4;
     param[4]:=5;
     param[5]:=6;
     wvsprintf(buf, FormatStr,@param);
     showmessage(buf)
    end;
    
    Чтобы можно было передавать разного типа данные, то придется в массив вбивать адреса их типа
    Code:
    const
     FormatStr = '%d-%d-%s-%d-%d-%d';
    var
     buf:array[0..255] of char;
     param:array[0..5] of dword;
     s:string;
    begin
     s:='hello'#0;
     param[0]:=10;
     param[1]:=2;
     param[2]:=dword(@s[1]);
     param[3]:=4;
     param[4]:=5;
     param[5]:=6;
     wvsprintf(buf, FormatStr,@param);
     showmessage(buf)
    end;
    
     
    #2 slesh, 19 Mar 2009
    Last edited: 19 Mar 2009