Add(MainForm,2953706,21,105) { Width=312 Height=234 Point(onClose) link(onCreate,3042499:doOpen,[]) link(onClose,3042499:doClose,[]) } Add(SQLite_DB,3042499,84,119) { FileName=":memory:" link(onOpen,12067265:doEvent1,[]) } Add(SQLite_Query,9781108,259,273) { SQL="SELECT name FROM test;" link(onQuery,418874:doAdd,[]) } Add(Hub,12067265,147,119) { OutCount=5 link(onEvent1,6501958:addFunction,[]) link(onEvent2,11586007:addFunction,[]) link(onEvent3,1561574:doExec,[(210,139)(210,174)]) link(onEvent4,982426:doQuery,[(192,146)(192,216)]) link(onEvent5,9781108:doQuery,[(178,153)(178,279)]) } Add(SQLite_Exec,1561574,259,168) { SQL="CREATE TABLE test(\r\nname Text);\r\nINSERT INTO test values("ASDF.QWE");\r\nINSERT INTO test values("QWERTY.qwe"); " } Add(ListBox,418874,329,273) { Left=15 Top=15 Width=120 Height=160 } Add(InlineCode,11586007,259,126) { @Hint=#3:имя|5:файла| WorkPoints=#11:addFunction| EventPoints=#6:onTest| DataPoints=#8:dbHandle| Code=#15:unit HiAsmUnit;|0:|9:interface|0:|52:uses kol,Share,Debug,Windows,SQLite3Api,hiSQLite_DB;|0:|4:type|28: THiAsmClass = class(TDebug)|9: public|24: dbHandle : THI_Event;|52: procedure addFunction(var _Data:TData; idx:word);|5: end;|0:|14:implementation|0:|64:procedure FName(ctx:pointer; nArg:integer; args:ppvalue); cdecl;|15:var s,d:string;|14: i:integer;|5:begin|10: d:='';|33: s:=sqlite3_value_text(args^);|67: For i:=1 to Length(s) do If s[i]='.' then break else d:=d+s[i];|50: sqlite3_result_text(ctx,PChar(d),Length(d),0);|4:end;|0:|34:procedure THiAsmClass.addFunction;|13:var dt:TData;|13: s:string;|5:begin|37: dt := ReadData(_Data,dbHandle,nil);|41: if _IsObject(dt,SQLite_GUID) then begin|89: sqlite3_create_function(ToObject(dt),PChar('FName'),1,SQLITE_ANY,nil,@FName,nil,nil);|6: end;|4:end;|0:|4:end.| AddHint(-6,-39,35,26,@Hint) } Add(SQLite_Query,982426,259,210) { SQL="SELECT FName(Lover(name)) FROM test;" link(onQuery,9606046:doAdd,[]) } Add(ListBox,9606046,329,210) { Left=140 Top=15 Width=110 Height=160 } Add(InlineCode,6501958,329,119) { @Hint=#5:Lower| WorkPoints=#11:addFunction| DataPoints=#8:dbHandle| Code=#15:unit HiAsmUnit;|0:|9:interface|0:|52:uses kol,Share,Debug,Windows,SQLite3Api,hiSQLite_DB;|0:|4:type|28: THiAsmClass = class(TDebug)|9: public|22: dbHandle:THI_Event;|52: procedure addFunction(var _Data:TData; idx:word);|5: end;|0:|14:implementation|0:|13:var s:string;|64:procedure Lower(ctx:pointer; nArg:integer; args:ppvalue); cdecl;|5:begin|31: s:=sqlite3_value_text(args^);|23: s:= ANSILowerCase(s);|48: sqlite3_result_text(ctx,PChar(s),Length(s),0);|4:end;|0:|34:procedure THiAsmClass.addFunction;|13:var dt:TData;|5:begin|37: dt := ReadData(_Data,dbHandle,nil);|41: if _IsObject(dt,SQLite_GUID) then begin|89: sqlite3_create_function(ToObject(dt),PChar('Lover'),1,SQLITE_ANY,nil,@Lower,nil,nil);|6: end;|4:end;|0:|4:end.| AddHint(-5,-32,44,13,@Hint) AddHint(-7,42,44,13,@Hint) }