Make(delphi) ver(4.04 build 185) Add(MainForm,2953706,301,301) { Width=473 Height=123 Caption="str_pad" Position=1 } Add(InlineCode,14180173,434,301) { @Hint=#7:str_pad| WorkPoints=#7:str_pad| EventPoints=#6:result| DataPoints=#5:input|10:pad_string|10:pad_length|8:pad_type| Code=#15:unit HiAsmUnit;|0:|2:(*|117:function str_pad( input, pad_length, pad_string, pad_type ) { // Pad a string to a certain length with another string|4: // |72: // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)|56: // + namespaced by: Michael White (http://crestidg.com)|0:|26: var half = '', pad_to_go;|0:|41: var str_pad_repeater = function(s, len){|23: var collect = '', i;|0:|44: while(collect.length < len) collect += s;|35: collect = collect.substr(0,len);|0:|18: return collect;|4: };|0:|125: if (pad_type != 'STR_PAD_LEFT' && pad_type != 'STR_PAD_RIGHT' && pad_type != 'STR_PAD_BOTH') { pad_type = 'STR_PAD_RIGHT'; }|51: if ((pad_to_go = pad_length - input.length) > 0) {|94: if (pad_type == 'STR_PAD_LEFT') { input = str_pad_repeater(pad_string, pad_to_go) + input; }|100: else if (pad_type == 'STR_PAD_RIGHT') { input = input + str_pad_repeater(pad_string, pad_to_go); }|40: else if (pad_type == 'STR_PAD_BOTH') {|63: half = str_pad_repeater(pad_string, Math.ceil(pad_to_go/2));|31: input = half + input + half;|39: input = input.substr(0, pad_length);|3: }|2: }|0:|14: return input;|1:}|2:*)|0:|9:interface|0:|21:uses kol,Share,Debug;|5:const|20: STR_PAD_LEFT = 0;|22: STR_PAD_RIGHT = 1; |20: STR_PAD_BOTH = 2;|2: |4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|11: input,|16: pad_string,|16: pad_length,|14: pad_type,|23: result: THI_Event;|52: procedure str_pad(var _Data:TData; Index:word);|0:|5: end;|0:|14:implementation|0:|29:procedure THiAsmUnit.str_pad;|3:var|31: str, half, padstring: string;|41: pad_to_go, padlength, padtype: integer;|0:|36: function ceil(num: real): integer;|7: begin|25: if frac(num) > 0 then|28: result := trunc(num) + 1|8: else |25: result := trunc(num);|8: end; |0:|60: function str_pad_repeater(s: string; len:integer): string;|5: var|15: i: integer;|7: begin|17: result := '';|33: while length(result) < len do|27: result := result + s;|38: result := copy(result, 1, len); |6: end;|0:|5:begin|31: str := ToStringEvent(input); |41: padstring := ToStringEvent(pad_string);|42: padlength := ToIntegerEvent(pad_length);|40: padtype := ToIntegerEvent(pad_type); |39: pad_to_go := padlength - length(str);|23: if pad_to_go > 0 then|7: begin|34: if padtype = STR_PAD_LEFT then|57: str := str_pad_repeater(padstring, pad_to_go) + str|40: else if padtype = STR_PAD_RIGHT then|57: str := str + str_pad_repeater(padstring, pad_to_go)|39: else if padtype = STR_PAD_BOTH then|9: begin|63: half := str_pad_repeater(padstring, ceil(pad_to_go / 2));|31: str := half + str + half;|37: str := copy(str, 1, padlength);|19: end; |10: end; |27: _hi_onEvent(result, str);|4:end;|0:|4:end.| link(result,6448544:doText2,[]) link(input,15449854:Text,[(440,292)(370,292)]) link(pad_string,3037108:Text,[(447,285)(412,285)]) link(pad_length,1263994:Text,[]) link(pad_type,2174022:Index,[(461,264)(510,264)]) AddHint(-89,51,50,13,@Hint) } Add(Edit,15449854,364,224) { Left=10 Top=25 Width=120 Text="nesco" } Add(Label,6462822,364,168) { Left=45 Top=5 Caption="input" AutoSize=1 Alignment=2 } Add(Edit,3037108,406,224) { Left=135 Top=25 Width=120 Text="-=" } Add(Label,5437071,406,168) { Left=170 Top=5 Caption="pad_string" AutoSize=1 Alignment=2 } Add(Edit,1263994,448,224) { Left=260 Top=25 Width=60 Text="30" DataType=1 } Add(Label,5739334,448,168) { Left=265 Top=5 Caption="pad_length" AutoSize=1 } Add(ComboBox,2174022,490,210) { Left=330 Top=25 Width=120 Height=21 Strings=#12:STR_PAD_LEFT|13:STR_PAD_RIGHT|12:STR_PAD_BOTH| ReadOnly=0 Point(Index) } Add(Label,1573207,490,168) { Left=365 Top=5 Width=48 Height=17 Caption="pad_type" } Add(Button,1487632,350,301) { Left=330 Top=55 Width=120 TabOrder=-1 Caption="Result" link(onClick,14180173:str_pad,[]) } Add(Edit,6448544,511,294) { Left=10 Top=55 Width=310 Text="" }