 Мне так (почему-то) больше нравится...
Add(MainForm,9982853,224,112) { Width=703 Height=264 Caption="Search for Windows drivers" BorderStyle=1 Position=1 Point(onClose) link(onCreate,3199062:doEvent1,[]) } Add(WinExec,385351,322,119) { FileName="driverquery.exe" Mode=0 Point(doConsoleExec) Point(onConsoleResult) Point(doConsoleTerminate) Point(onConsoleTerminate) link(onConsoleResult,16628860:doCharset,[]) } Add(Charset,16628860,371,133) { link(onCharset,12987917:doStrCat,[]) } Add(Hub,3199062,273,126) { OutCount=3 link(onEvent1,5393472:doWork1,[(302,132)(302,110)(418,110)]) link(onEvent2,385351:doConsoleExec,[]) link(onEvent3,9446271:doTimer,[(305,146)(305,188)]) } Add(Timer,9446271,322,182) { Interval=2000 Enable=1 AutoStop=1 link(onTimer,5668561:doEvent1,[]) } Add(StringTable,14516997,539,252) { Width=697 Height=236 Align=5 Font=[Courier,10,0,0,204] Columns=#10:Модуль=120|12:Название=220|16:Тип драйвера=130|15:Дата ссылки=190| Grid=0 Point(doEnsureVisible) Point(EndIdx) } Add(Hub,5668561,371,182) { OutCount=5 link(onEvent1,385351:doConsoleTerminate,[(397,188)(397,173)(313,173)(313,146)]) link(onEvent2,14516997:doClear,[(533,195)(533,265)]) link(onEvent3,11998545:doText,[(409,202)(409,223)]) link(onEvent4,5393472:doWork3,[(418,209)]) link(onEvent5,10563126:doW1,[(397,216)(397,258)]) } Add(StrList,11998545,434,196) { link(Str,13757289:Var2,[]) } Add(StatusBar,1763416,602,308) { } Add(FormatStr,1951999,553,308) { DataCount=1 Mask="Найдено модулей -- %1" link(onFString,1763416:doText,[]) link(Str1,14516997:EndIdx,[]) } Add(StrCat,12987917,434,133) { Point(doClear) link(Str1,13757289:Var3,[(440,119)(478,119)(478,173)]) } Add(GetDataEx,13757289,434,168) { link(Data,12987917:Result,[]) } Add(InlineCode,10563126,448,252) { WorkPoints=#4:doW1| EventPoints=#5:onRes|5:onEnd| DataPoints=#2:Ar| Code=#15:unit HiAsmUnit;|0:|9:interface|16://Tad 13.11.2018|29:uses windows,kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|15:// Event Points|33: Ar, onRes, onEnd : THI_Event;|0:|15:// Work Points |45: Procedure doW1(var _Data:TData; Index:word);|5: end;|0:|14:implementation|38:// ----------Work Procedures----------|28:Procedure THiAsmClass.doW1;|20: var i, k : integer;|21: FItem,Ind : TData;|18: s, ss : string;|27: d : array[0..2] of byte;|17: Arr : PArray; |5:BEGIN|22: Arr := ReadArray(Ar);|18: dtInteger(ind,2);|21: Arr._Get(ind,FItem);|22: s := toString(FItem);|8: k := 0;|25: for i:=1 to Length(s) do|47: if s[i]=' ' then begin d[k]:=i; inc(k); end;|9: i := 3;|20: dtInteger(Ind,I);|37: while Arr._Get(Ind,FItem) do begin|23: s:= toString(FItem);|18: s[d[0]] := ';';|18: s[d[1]] := ';';|18: s[d[2]] := ';';|49:// ============== Для красоты. Можно выбросить |30: ss:=trim(copyend(s, d[2]));|24: if length(ss)=19 then|10: begin |27: replace(ss,' ',' ');|32: s:=copy(s,1,d[0]+d[1])+ss;|8: end;|34:// ============= Конец красоты |24: _hi_onEvent(onRes,s);|11: inc(I);|21: dtInteger(Ind,I);|6: end;|21: _hi_onEvent(onEnd);|4:END;|0:|4:end.|0:| link(onRes,14516997:doAdd,[]) link(onEnd,7440730:doEvent1,[]) link(Ar,11998545:Array,[]) } Add(Hub,7440730,490,259) { link(onEvent1,1951999:doString,[(523,265)(523,314)]) link(onEvent2,11998545:doClear,[(513,272)(513,296)(422,296)(422,209)]) } Add(HubEx,5393472,414,140) { link(onEvent,12987917:doClear,[]) }
|