1. Pascal / Говнокод #8906

    +89

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    unit DllUnit; interface
    
    uses windows, sysutils;
    
    Procedure GuPrcA(var p:PAnsiChar;const l:integer); StdCall;
    Procedure GuPrcW(var p:PWideChar;const l:integer); StdCall;
    
    Exports GuPrcA,GuPrcW;
    
    implementation
    
    procedure GuMes(s:string);
    begin
    MessageBox(0,pchar(s),'From dll',mb_iconinformation);
    end;
    
    Procedure GuPrcW(var p:PWideChar;const l:integer); // wide
    var s:widestring;
    begin
    if (p=nil)or(l<1) then begin p:=nil;exit;end;
    SetLength(s,trunc(l/sizeof(widechar)));Move(p^,Pointer(s)^,l);
    gumes('l: '+inttostr(l)+', nl: '+inttostr(length(s))+#10+'-'+s+'-');
    s:=widestring(Uppercase(s));Move(Pointer(s)^,p^,l);
    end;
    
    Procedure GuPrcA(var p:Pansichar;const l:integer); // ansi
    var s:ansistring;
    begin
    if (p=nil)or(l<1) then begin p:=nil;exit;end;
    SetLength(s,l);Move(p^,Pointer(s)^,l);
    gumes('l: '+inttostr(l)+', nl: '+inttostr(length(s))+#10+'-'+s+'-');
    s:=ansistring(AnsiUppercase(s));Move(Pointer(s)^,p^,l);
    end;
    
    Initialization
    
    ReportMemoryLeaksOnShutdown:=true;
    
    end.
    
    (* выше - DLL, ниже импорт из неё *)
    ...
    implementation
    
    {$R *.dfm}
    
    Procedure GuPrcA(var p:PansiChar;const l:cardinal); StdCall; external 'mydll.dll' name 'GuPrcA';
    Procedure GuPrcW(var p:PwideChar;const l:cardinal); StdCall; external 'mydll.dll' name 'GuPrcW';
    
    procedure TForm1.Button6Click(Sender: TObject);
    var p:pwidechar;c:cardinal;s:widestring;
    begin
    s:=widestring(memo1.Text);
    c:=length(s)*sizeof(widechar);
    p:=allocmem(c);
    Move(Pointer(s)^,p^,c);
    GuPrcW(p,c);
    s:='';setlength(s,trunc(c/sizeof(widechar)));
    Move(p^,Pointer(s)^,c);
    Freemem(p,c);
    memo1.Text:='='+s+'= l:'+inttostr(c);
    end;
    
    procedure TForm1.Button7Click(Sender: TObject);
    var p:pansichar;c:cardinal;s:ansistring;
    begin
    s:=ansistring(memo1.text);
    c:=length(s);
    p:=allocmem(c);
    Move(Pointer(s)^,p^,c);
    GuPrcA(p,c);
    s:='';setlength(s,c);
    Move(p^,Pointer(s)^,c);
    Freemem(p,c);
    memo1.Text:='='+s+'= l:'+inttostr(c);
    end;
    
    Initialization
    
    ReportMemoryLeaksOnShutdown:=true;
    
    end.

    На стековерфловочке завелся некий GuSoft (sic!), который регулярно постит свои высеры через гоогле транслате. Сегодня вот таким шедевром разродился, хочет бесплатных консультаций чтобы в этой херне ему поискали ошибки и «оптимизировали».

    Запостил: bugmenot, 05 Января 2012

    Комментарии (11) RSS

    • А вот после этого комментария я заподозрил, что он не китаец, а бегает на бескрайних просторах страны, знаменитой своими феерическими дельфистами:
      P.S. At you always do "down like" for people "2 grade"? Your nation and is not present 300 years, and democracy in all world bear.
      Ответить
    • Краткость сестра таланта:(. Ну зачем после НГ так сильно много?
      Ответить
      • Пять дней уже прошло, хватит праздновать :-)
        Ответить
    • Какие информативные имена процедур! Какие пляски с указателями! Какой code-style! Ну прям полный набор.
      Ответить
    • unit.dll, плять
      Ответить
    • I supspoe that sounds and smells just about right.
      Ответить
    • This is just the <a href="http://wvihlsvky.com">perfcet</a> answer for all forum members
      Ответить
    • Hot damn, lokniog pretty useful buddy. http://mpwonqel.com [url=http://qmmafivg.com]qmmafivg[/url] [link=http://orkusfi.com]orkusfi[/link]
      Ответить
    • That insight solves the prmlebo. Thanks! http://ebfepeydrdz.com [url=http://bkamawsvqpa.com]bkamawsvqpa[/url] [link=http://icrakrjhb.com]icrakrjhb[/link]
      Ответить

    Добавить комментарий