[Lua] portable Entwicklungsumgebung für Windows

CHDK-Skripte, CHDK-Entwicklung, PC-Zusatzprogramme, Informationen für Tüftler

Re: portable Entwicklungsumgebung für Windows

Beitragvon rudi » 29.11.2017, 18:43

neue Version 4.1.010 mit folgenden Änderungen:
  • Update auf chdkptp Rev. 787
  • keypad.exe, Version 0.4.3, änderbare Hintergrundfarbe im Display mit Klick auf den Displaybereich
  • Hintergrundbild in Graustufen geändert
  • Formatkorrekturen in keypad.au3, grid_viewer.lua
  • liesmich.txt, readme.txt aktualisiert
Die Datei befindet sich im ersten Beitrag.

Gruß rudi
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 506
Registriert: 11.09.2009, 11:27
Kamera(s): A590IS_101B, SX260_100B

Re: portable Entwicklungsumgebung für Windows

Beitragvon rudi » 11.12.2017, 22:14

neue Version 4.1.011 mit folgenden Änderungen:
  • Fehlerbehebung für CHDK-Schlüsselwortliste, Grund: unmaskiertes "<" und ">" in XML-Attribut der Datei stylers.xml ab NPP 7.5.x
  • Aktualisierung auf NPP 7.5.3
  • Aktualisierung chdkptp Lua-Dateien auf Rev. 792
  • Aktualisierung CHDK-Dateien auf Rev. 4957
  • lokale Kopie der LUA-Dokumentationen Lua 5.1 [en], Lua 5.2 [en] und Lua 5.1 [de] in NPP-Menü "Ausführen" hinzugefügt, Quellennachweis in /docs/lua/source.txt
  • liesmich.txt, readme.txt aktualisiert
Die Datei befindet sich im ersten Beitrag.

Gruß rudi
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 506
Registriert: 11.09.2009, 11:27
Kamera(s): A590IS_101B, SX260_100B

Re: portable Entwicklungsumgebung für Windows

Beitragvon rudi » 05.11.2018, 12:27

neue Version 4.1.012 mit folgenden Änderungen:
  • Aktualisierung 7zip auf Rev. 18.05
  • Aktualisierung chdkptp auf Rev. 795,lua scripts Rev. 844
  • Aktualisierung CHDK-Dateien auf Rev. 5104
  • Aktualisierung Notepad++ auf Rev. 7.5.9
  • Aktualisierung NppExec auf Rev. 06-RC2
  • NEU: stdeditor.cmd - Funktion zum Umschalten von hostluaPortable als Windows Standarteditor, ab NPP 7.5.9, Funktionalität in stdeditor.vbs, mit UAC und evtl. REG-Sicherung
  • camera_funcs.lua um rawop erweitert, fehlende Farbdefinitionen
  • Skript hostlua_info.lua - Überarbeitung und Erweiterung um Bibliotheken und Aufrufkonventionen
  • Aktualisierung Autovervollständigung und Schlüsselwortliste
  • Syntaxprüfung bei lua-local und lua-remote erfolgt nicht mehr über temporäre Datei
  • liesmich.txt, readme.txt aktualisiert
Die Datei befindet sich im ersten Beitrag.

Gruß rudi
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 506
Registriert: 11.09.2009, 11:27
Kamera(s): A590IS_101B, SX260_100B

Re: portable Entwicklungsumgebung für Windows

Beitragvon Caefix » 23.02.2019, 20:15

--[[ If and only if You a coin in the SD-slot stuck have then and only then are You here sowhat from false; return tohandy end ]]--
--[[ elseif You the three green lines from page 1 mastered have or too not then You could one mouseevent more invest and enjoy(...) ]]--
--[[ (Lua)Skripten ohne hostluaPortable ist digitale Askese, fast wie Canon ohne CHDK.]]-- #-o
--[[ Das ist für jeden Skripter was, der eine Kanone (trans)portieren kann, sogar rückwirkend vermisse ich das noch... ]]--
Code: Alles auswählen
--- < scriptiX für PC >
--- < A/CHDK/SCRIPTS/SCRiPTiX.LUA -- 03/19/19 19:12:12 >
--- < 1000@ | A/CHDK/SCRIPTS/fertIX.Lua ß-265 >
--[===========[
@title scriptiX.Lua
@chdk_version 1.4
--- Speichermangel bei Ix230HS, [SX210is: NICHT MEHR MIT-1.5.0-5163]
--- (D,E,2,9,1,-2,F,0,0,0,C,A,Z,G,1,88
  --(D,E,H,T,P, L,F,R,I,J,C,A,Z,G,W,U)
@param    D D StartODERdner
 @default D 0
 @values  D SCRIPTS LOGS BOOKS HELP (.scX)
@param    E E Endung
 @default E 0
 @values  E .Lua .bAs >>.tXt .baK .tmp .lOg .scX .XxX
@param    H H Helfix
 @default H 0
 @values  H --- HELP/ LOGS/ SCRIPTS/ BOOKS/ german ???
@param    T T Trix & ErrODERix
 @default T 0
 @values  T --- ???
@param    P P process  +ab|0>_|-letzte
 @default P 1
@param    L L edit Zeile  xxx>_ (!-=^^=!)
 @default L 0
@param    F Find_str  [find[><rep]]
 @default F 0
 @values  F --- fun() Fݒ WňREND BIS DANN SONST ---><: WOODTXT #^^%q%q
@param    R R --- /rem Zeilen?
 @default R 2
 @values  R KEEP -cut- >Parse
@param    I I *?* Insertix
 @default I 0
 @values  I nein JA
@subtitle :...,....1....,....2....,....3....,....4..
@param    J J Layoutix?
 @default J 0
 @values  J nein JA
@param    C C Kürzen  (!-=RO=-!)
 @default C 0
@param    A Ab Zeile  (|0=noNr|-noEd)
 @default A 1
@param    Z bis Zeile (|0=crLf|-letzte)
 @default Z 99999
@param    G G LOG_~.TXT (|0=gec|+Neu|-Anh)
 @default G 0
@param    W W Laufzeitbremse (-1=noEcho)
 @default W 4
@subtitle DON'T PANIC!
@param    U U {}@   (|0 bei lowMem)
 @default U 1
--]===========]
 
--[ [--:) [PC] z.B. wenn man scriptiX selbst oder extern (scryptiX) starten möchte. _HLP
if NICHT sleep DANN FUNKTION compat()
 FUNKTION get_exp_count(...)
   R݃KGABE ... ODER 9999 ENDE
 FUNKTION get_tick_count(...)
   R݃KGABE ... ODER 0 ENDE
 FUNKTION get_image_dir(...)
   R݃KGABE ... ODER "" ENDE
 FUNKTION console_redraw(...)
   R݃KGABE ... ENDE
 FUNKTION set_console_layout(...)
   R݃KGABE ... ENDE
 FUNKTION file_browser(s,...)
    print (">Startup dir:<", s,...); io.stMACHMALBITTEut:flush()
   R݃KGABE io.stdin:read() ODER "" ENDE
 FUNKTION play_sound(...)
   R݃KGABE ... ODER 4 ENDE
 FUNKTION sleep(...)
   R݃KGABE ... ENDE
 FUNKTION is_pressed(...)
   R݃KGABE NIX ENDE
 FUNKTION wait_click(...)
   R݃KGABE ... ODER 9999 ENDE
 FUNKTION textbox( t, m, d, l) --line 825
    print (">Title:<", t)
    print (">Message:<", m)
  WENN d UND m UND (d~=m) DANN
    print (">Default string<", d) ENDE
    LOKAL res = d; io.stMACHMALBITTEut:flush()
    res=d ODER io.stdin:read()
    R݃KGABE res ODER "" ENDE
print(_VERSION,compat)
ENDE compat() ENDE--]]--
--- <
--- ---- ---- ::...;....1....;....2....;....3....;....4....;....5....;....6....;....7....;....
 
--print_screen(-112)
--FUNKTION restODERe(x) R݃KGABE x ENDE
 
FUNKTION help(...)
LOKAL x=0
WENN G<21 DANN Fݒ ee,lin in pairs(_G) MACHMALBITTE x=x+1
   WENN G*G<111 DANN
      WENN G*G%2==0 DANN golog(ee) SONST
       golog(stf([[%s %q]],ee,lin)) ENDE ENDE
    print(x,-collectgarbage("count"),ee,lin)
    wait(0) ENDE
   WENN G/2==-3 DANN R݃KGABE 0 ENDE ENDE
--[ [--
WIEDERHOLE
 LOKAL str=...
 LOKAL l,K,x=t,0,0
 collectgarbage()
WENN str==NIX DANN str="X" ENDE
WENN str=="" DANN str="L" ENDE
 LOKAL hfile="A/CHDK/HELP/"..str
WENN #str==1 DANN hfile=getstr("ß",str) ENDE
 Fݒ lin in io.lines(hfile) MACHMALBITTE x=x+1
  WENN lin:find(find_str)~=NIX DANN K=0; l=t ENDE
   LOKAL ii=1; wait(1)
   WňREND lin~="" MACHMALBITTE
    WENN K==8 DANN R݃KGABE x ENDE
     Fݒ i=1,ii MACHMALBITTE str=lin; print(-x,str)
      WENN K~=8 DANN K=0 ENDE
       l=l+1+#str/44
       WňREND l>11 UND K==0 MACHMALBITTE l=1; K,ti=getkey(4)
        WENN K==2 DANN l=t
            str=edlin(str); Go=golog(str)
           WENN lstr(4,str)=="    " DANN K=0 ENDE ENDE
        WENN K>22 ODER K==6 DANN l=t ENDE
         WňREND K==29 MACHMALBITTE K=0
           WENN ti>t DANN prompt(0,str) SONSWENN
               ti>333 DANN prompt(42,str) ENDE
            Go=golog(str); ti=0 ENDE
        WENN ti>555 DANN R݃KGABE x ENDE
      ENDE ENDE --ii
   lin="" ENDE -- wh lin
 ENDE --io
 K=getkey(5) --,collectgarbage("count"),err)
 collectgarbage()
BIS K~=5 --]]--
R݃KGABE x
ENDE
 
FUNKTION golog(...)
--LOKAL f,r=...
-WENN r~=NIX UND isfile(f) DANN R݃KGABE output(f,r) ENDE
LOKAL l=get_exp_count()
WENN G~=0 DANN l=G ENDE
WENN G>0 DANN Glog=stf("A/CHDK/LOGS/LOG_%04d.TXT",G); G=-G ENDE
WENN _HLP ODER G*G<111 ODER type(...)=="table" DANN output(12,...) SONST
  print_screen(l)
  set_console_autODERedraw(-1)
   print(...)
  set_console_autODERedraw(1)
  print_screen(0) ENDE
R݃KGABE l
ENDE
 
FUNKTION img_info(x,...)
LOKAL str,dd="",get_image_dir()
WENN x>=1 DANNWENN ... DANN print(...) ENDE
    print(os.date()); K=5 ENDE
WENN x==t DANN str=file_browser(dd) ODER "" ENDE
WENN str=="" DANN
    str=printf("%s/IMG_%04d.JPG",dd,get_exp_count()) ENDE
R݃KGABE str,dd.."/"
ENDE
 
FUNKTION klix(x,...)
 collectgarbage()
--[ [--:)<<LowMem Notschalter
 shoot() -- Da geht dann [SX210is wg. Speichermangels aus: NICHT MEHR MIT-1.5.0-5163]
 dd,mdI=img_info(t,...)
LOKAL str=... ODER ''
WIEDERHOLE
 WENN 2>1 DANN --shoot(); file_browser(mdI) SONST
  WIEDERHOLE
    set_aelock(0); set_aflock(0)
    press("shoot_half"); sleep(42)
    WňREND get_shooting() MACHMALBITTE sleep(42) ENDE
    WIEDERHOLE
      iii=get_free_disk_space()
    BIS NICHT get_shooting() UND NICHT is_pressed("shoot_half")
    set_aflock(1); set_aelock(1)
    press("shoot_full")
    play_sound(1)
    release("shoot_full")
   WENN (get_tv96()<1) UND (get_raw_nr()~=1) DANN
      sleep(tv96_to_usec(get_tv96())/t) ENDE--Zeit f. Darkframe,
    -- rettet Ixus300HS Kamerafehler E26 ?? --<VooMACHMALBITTEo!
 
    LOKAL K,u=0,0
    Fݒ K=0,tonum(get_raw()) MACHMALBITTE u=0
        WIEDERHOLE sleep(t); u=u+1
        kkk=get_free_disk_space()
        play_sound(4)
        BIS iii>kkk ODER u==7
              iii=kkk ENDE --u
    release("shoot_half")
  BIS NICHT is_pressed("shoot_half") ENDE
 
  WIEDERHOLE K=getkey(x*t+9); wait(0)
    WENN K==8 ODER x>0 DANN LOKAL i=img_info(1,...)
       WENN #str>1 DANN output(1,str) ENDE
        output(1,stf("%s\n %s",i,os.date()))
       WENN lstr(1,str)=="?" DANN
        output(textbox(basline,...," Motiv:",t)) ENDE
        str='' ENDE
    WENN x==t DANN R݃KGABE kkk SONST x=x%10 ENDE
    WENN K==5 DANN K=exitalt(5,"*<klix>") ENDE
      --x==1 NICHTiert jedes Bild,10 nur das 1.
  BIS K~=9
BIS K~=29 --]]--
R݃KGABE K
ENDE
 
FUNKTION exitalt(x,...)
 play_sound(x,"exitalt");
 LOKAL K=getkey(t);
WENN K==0 DANN set_aelock(0); set_aflock(0) ENDE
 WIEDERHOLE exit_alt(); sleep(444)
 BIS get_alt_mode();
 K=getkey(t);
 K=getkey(5,...);
 pau=t
R݃KGABE K
ENDE
 
FUNKTION wait(w)
if _HLP ODER (W<0) DANN R݃KGABE 0 ENDE
if NICHT get_alt_mode() DANN exitalt(0,"exitalt wait") ENDE
 wait_click(w*100+1,"wait")
 LOKAL t=get_tick_count()
 WIEDERHOLE wait_click(10)
 BIS NICHT is_pressed "right"
 t=(get_tick_count()-t)/100
WENN t>2 UND t<22 DANN W=t ENDE
WENN is_pressed "MACHMALBITTEwn" DANN sleep(99)
    collectgarbage()
   WENN t>999 DANN find_str="" ENDE
   WENN W>0 DANN W=W-1 ENDE ENDE
R݃KGABE t
ENDE
 
 
 
 
FUNKTION lstr(x,...)
-WENN type(...)~="string" DANN errODER([[ EYn ^VV^ildsch^vv^eYn! ]],2) ENDE
 WENN x<0 DANN x=x-1 ENDE
  R݃KGABE string.sub(...,1,x)
ENDE
 
FUNKTION rstr(x,...)
 WENN x<0 DANN x=string.len(...)+x ENDE
  R݃KGABE string.sub(...,-x,t)
ENDE
 
FUNKTION printf(...)
  LOKAL str=string.Fݒmat(...)
  print(str)
R݃KGABE  str
ENDE
 
FUNKTION stf(...)
LOKAL s,r=...
  WENN r UND string.find(s,"%",1,1) DANN
   R݃KGABE assert(string.Fݒmat(setarg(...)),...)  ENDE
R݃KGABE ...
ENDE
 
FUNKTION cut(...)
if NICHT ... DANN R݃KGABE "\t" ENDE
LOKAL x,str=0,tostring(...)
   WIEDERHOLE x=x+1 BIS x>=#str ODER str:sub(x,x)>"\30"
   str=str:sub(x,t)
   str=str:gsub("\t"," ") --
   WňREND str:find("  ") MACHMALBITTE str=str:gsub("  "," ") ENDE
R݃KGABE str
ENDE
 
FUNKTION split(sep,str,...)
  str=tostring(str)
 WENN type(sep)=="number" DANN
     R݃KGABE lstr(sep,str),rstr(-sep,str),#str-sep ENDE
  LOKAL spc=sep==" "
  LOKAL x=str:find(sep,...)
 WENN spc DANN str=cut(str) ENDE
 WENN x==NIX DANN sep="" SONST
     sep=str:sub(x+#sep,t); str=str:sub(1,x-1) ENDE
 WENN x==1 UND spc DANN str=sep ENDE
R݃KGABE str,sep,str:find(sep,...) ODER 0
ENDE
 
FUNKTION tonum(x,...)
LOKAL p,chr,str=0,'',...
 WENN x==NIX DANN tonumber() ENDE
 WENN type(x)~="number" DANN
    WENN x=="" DANN R݃KGABE ENDE
     str=x; x=1 ENDE
 WENN type(str)=="boolean" DANN
    WENN str==x==x DANN R݃KGABE 1,1 SONST R݃KGABE 0,1 ENDE ENDE
 WENN str==NIX DANN R݃KGABE NIX,-t ENDE
 WENN type(str)=="table" DANN R݃KGABE #str ODER -1,str[x] ENDE
 WENN x*x>#str*#str DANN R݃KGABE 0,-#str ENDE
  WIEDERHOLE chr=str:sub(x,x)
   WENN tonumber(chr)~=NIX DANNWENN p==0 DANN p=x ENDE SONST
      WENN p>0 DANN str=str:sub(p,x-1); chr=lstr(p-1,...) ENDE ENDE
    x=x+1 BIS x>#str
 WENN x+1<string.len(str) DANN p=x+1 SONST p=1-x ENDE
  x=tonumber(str) ODER 0;WENN rstr(1,chr)=='-' DANN x=-x ENDE
R݃KGABE x,p
ENDE
--[ [--
FUNKTION abs(x)
 x=tonum(x ODER 0) ODER 0
WENN x>0 DANN R݃KGABE x ENDE
 R݃KGABE -x
ENDE --]]--
 
 
FUNKTION setarg(...)
if ...==NIX DANN arg=NIX
   R݃KGABE collectgarbage("count") ENDE
LOKAL X,sep,x,s=0,seP ODER ',',...
 WENN type(x)=="boolean" DANN
    WENN s==NIX DANN
       WENN x==x==x DANN table.concat(arg,sep) SONST table.sODERt(arg) ENDE
           R݃KGABE unpack(arg) ENDE
    WENN x==x==x DANN
       WENN type(s)=="boolean" DANN WIEDERHOLE X=X+1
          WENN arg[X]~=NIX DANN
          WENN s==x==x DANN newline(t,arg[X]); writeln(arg[X])
              SONST print(arg[X]) ENDE ENDE BIS X>=#arg
           R݃KGABE unpack(arg) ENDE
       WENN type(s)=="table" DANN R݃KGABE unpack(s) ODER s SONST arg={...} ENDE
     ENDE ENDE
 WENN isfile(x) DANN arg={}
     Fݒ z in io.lines(x) MACHMALBITTE X=X+1; arg[X]=z ENDE
     collectgarbage(); R݃KGABE unpack(arg) ENDE
 WENN arg==NIX DANN arg={...} ENDE
LOKAL arg={}
 WENN type(x)~="table" DANN arg={...} SONST WIEDERHOLE getkey(1,x[1])
    WENN x[1]==NIX DANN--x==_G DANN
        Fݒ ee,lin in pairs(x) MACHMALBITTE X=X+1
           WENN G*G%2==0 DANN arg[X]=ee SONST
            arg[X]=(stf([[%s%s%s]],ee,s ODER seP ODER ',',lin)) ENDE ENDE
        table.sODERt(arg)
       WENN s DANN output(13,arg)
        R݃KGABE unpack(arg) ENDE ENDE
    WENN s==NIX DANN R݃KGABE unpack(x) SONST
       WENN type(s)=="table" DANN R݃KGABE unpack(x),unpack(s) ENDE
        LOKAL x,a,b,c,d,e,f,g,h,i=...
       WENN tonumber(a)==NIX DANN R݃KGABE unpack(x),a,b,c,d,e,f,g,h,i ENDE
       WENN tonumber(b)==NIX DANN b=#x ENDE
        R݃KGABE unpack(x,a,b) ENDE BIS 1<2 ENDE
  x=tostring(x)
 WENN tonumber(x)==NIX UND #x==1 DANN sep=x ENDE
 WENN #arg==1 DANN X=0; s=...
    WENN sep==' ' DANN s=cut(s) ENDE
     WIEDERHOLE X=X+1; arg[X],s=split(sep,s) BIS s=='' ENDE
  X=0
 WENN tonumber(arg[1])==NIX DANN
     WIEDERHOLE X=X+1; arg[X]=tostring(arg[X]) BIS X>=#arg SONST
     WIEDERHOLE X=X+1; arg[X]=tonum(arg[X]) BIS X>=#arg ENDE
R݃KGABE unpack(arg)
ENDE
 
--[[
FUNKTION argum(K,x,y,...)
if (#arg ODER 0)==0 DANN R݃KGABE 0 ENDE
if x<0 DANN x=#arg+x+1 ENDE
if y<0 DANN y=#arg+y+1 ENDE
if y>#arg DANN y=#arg ENDE
if K<0 DANN K=getkey(-K,...) ENDE
WňREND x<=#arg UND x<=y MACHMALBITTE
  WENN K==K DANN x=x ENDE
  WENN K==24 DANN WIEDERHOLE writeln(arg[x]); x=x+1 BIS x>y ENDE
   x=x+1 ENDE--wh
R݃KGABE x-1
ENDE
--]]--
 
FUNKTION output(f,...)
LOKAL X,t,str=0,2<1,stf(...)
if NICHT tonumber(f) DANN str=f; f=9 ENDE
  WňREND type(f)=="number" MACHMALBITTEWENN
   f<0 DANN newline(t,str); R݃KGABE writeln(str) SONSWENN
   f==0 DANN f=mdX.."!NICHTiX.tXt" SONSWENN
   f==1 DANN f=mdI.."!NICHTiX.tXt" SONSWENN
   f==2 DANN f=Glog SONSWENN
   f==3 DANN f=mdX.."!Environ.tXt" --SONSWENN
        SONST print(str); f=f%10; t=1<2
         WENN f>3 DANN R݃KGABE 0 ENDE ENDE-WENN f
   ENDE--wh
 --  print(' -->',f,'--')
  LOKAL out=io.open(f,"a") ODER io.open(erriX,"a")
 WENN type(str)=="table" DANN
    WENN str[1]==NIX DANN
        Fݒ ee,lin in pairs(str) MACHMALBITTE
         WENN t DANN print(ee,lin) ENDE
          out:write(ee..(seP ODER " ")..tostring(lin).."\n") ENDE
        SONST WIEDERHOLE X=X+1
         WENN t DANN print(str[X]) ENDE
         WENN str[X]~=NIX DANN out:write(str[X].."\n") ENDE
        BIS X>=#str ENDE
     SONST X=1; out:write(str.."\n") ENDE
out:close()
R݃KGABE X
ENDE
 
 
--- <
--- ---- ---- :...,....1....,....2....,....3....,....4....,....5....,....6....,....7....,....
 
FUNKTION begin(...)
LOKAL bn=BN ODER "fertiX"
if ...~=NIX DANN print("*<<<",...,">>>") ENDE
LOKAL K,l=0,0
   basfile=log42
  WENN U%t==0 DANN K=1; X=t*t; Z=X; rem="--- " SONST--:)
   Fݒ zeile in io.lines(log42) MACHMALBITTE X=X+1; l=l+#zeile
      WENN zeile>"" UND lstr(2,zeile)=="--" DANN
          bug=-1-bug; rem="--- " ENDE
       Fݒ ee in zeile:gmatch("\34") MACHMALBITTE K=K+1 ENDE
       bug=bug ODER K%2
      WENN bug>0 UND L>=0 DANN L=-L
         WENN P<X DANN P=X+1 ENDE ENDE
--- <
--- :       printf("%4d%5d%7d",X,collectgarbage("count"),l)-- so zum Zuschauen wie der Speicher schwindet.
--- <
      WENN X%42==0 DANN collectgarbage() ENDE --!! genau hier u.U. sehr wichtig.
   ENDE ENDE --FݒX
  WENN K>0 DANN
     WENN L==0 DANN L=t*t ENDE
     WENN L>0 DANN L=-L ENDE ENDE
  WENN bug>0 DANN play_sound(6,"^VV^ildsch^vv^eYn?") ENDE
   collectgarbage()
 
  WENN RW DANN wait(0)
     WENN eXt==".scX" DANN os.mkdir(lstr(-1,mdX)) ENDE
     WENN eXt==".XxX" DANN bn="xyx00xyx" SONST
     WENN type(E)=="string" DANN
        WENN E:find('.')==NIX DANN eXt=".tXt"; E=E..eXt; wa='a' ENDE
        WENN lstr(2,E)~="A/"  DANN E=mdX..E ENDE
         basfile=E; bn=E SONST
         -WENN _HLP DANN bn=" Enter Target:" ENDE--:)
--- <
        WENN NICHT _HLP DANN bn=" |\\"..bn ENDE-- die Striche können weg, sonst getstr...
         bn=textbox(stf("%d rw%d %s",collectgarbage("count"),R,dd..pc..eXt)
           ,os.date(),bn,9) ODER ""; wait(0) ENDE ENDE
     WENN bn=="" DANN basfile=erriX SONST
        WENN tonumber(bn)~=NIX DANN R݃KGABE 3 ENDE
        WENN bn==" " DANN bn="!!IXIXIX" ENDE
        WENN lstr(2,bn)~="A/" DANN basfile=mdX..bn..eXt ENDE ENDE
     WENN lstr(1,bn)==" " DANN ch4=string.sub(bn,2,1)
         basfile,K=getfile(dd)
        WENN K==3 DANN R݃KGABE 3 ENDE ENDE
     WENN log42==basfile DANN basfile=mdX.."tempX"..eXt
         print("*<< = >>--->"..basfile.." >") ENDE
     WENN log42==basfile ODER bn=='' DANN RW=FALSCH ENDE ENDE
  WENN RW DANN ee="rw"; rw=1 SONST ee="RO"; rw=0 ENDE
 
  WENN type(F)=="string" DANN find_str=F SONST
  WENN F>0 DANN
      LOKAL Fnd={"FUNKTION (x,...)",
      "Fݒ =*+-,,???remd_---","WňREND (<=~=>)","BIS (<=~=>)",
      WENN (<=*+-~=>) UND ODER DANN","=SONSWENN <=~=>gosubto##",
      "--- 88><:","><WOOD.TXT","*:##==^^\34\34\\\\","???"}
     WENN F>#Fnd DANN F=#Fnd ENDE
      find_str=textbox(basfile,pc..ee..lineal,Fnd[F],t)
      Fnd=NIX ENDE
      find_str=find_str ODER "><" ENDE
 
   find_str,rep_str=split("><",find_str)
   collectgarbage()
   sec=get_tick_count()
   printf(rem.."<>> %d %s %d",X,basfile,-bug*t)
  WENN A>X DANN A=X ENDE
  WENN P<0 DANN P=X+P ENDE
  WENN P>X DANN P=X+1 ENDE
  WENN Z<0 DANN A=X-Z; Z=X ENDE
  WENN Z>X DANN Z=X ENDE
   remV=rem.."<"; rC=lstr(1,rem)
   basline=lineal
   --basline=bn
R݃KGABE 0
ENDE
 
FUNKTION nubas(camera_name)
LOKAL n=camera_name ODER "PC"
txt=io.open(log42,'r'); Li=0
if RW UND NICHT TF DANN Lo=0
   bas=io.open(basfile,wa)
   RV=P==P; writeln(rem.."< scriptiX für "..n.." >")
   RV=P==P; writeln(rem.."< "..log42..' -- '..os.date().." >") ENDE
ENDE
 
FUNKTION head(...)
if ...~=NIX DANN print(...) ENDE
LOKAL bi=_HLP UND "PC" ODER get_buildinfo()
nubas(bi.platFݒm)
if RW DANN RV=P==P
   writeln(printf("%s< %d@ %s%s ß%d >",rem,U,pc,basfile,-collectgarbage("count")))
   SONST printf("%s %s %s >",remV,ee,string.upper(bi.platFݒm ODER "You")) ENDE
ENDE
 
 
FUNKTION readln(...)
LOKAL x=0
zeile=...
if Z-C*rw>Li DANN
  WENN txt==NIX ODER Li<0 DANN zeile=edlin(...) SONST
  WENN A<Z DANN x=1
      WňREND x<A MACHMALBITTE x=x+1; ee=txt:read()
        WENN string.find(ee,"*]",1,1)~=NIX DANN A=0 ENDE
        WENN tpx~=NIX DANN tpx:write(ee,crLf) ENDE ENDE
      Li=Li+x-1 ENDE
      WIEDERHOLE zeile=txt:read(); Li=Li+1 BIS zeile~=remV ENDE
 
  WENN zeile==NIX DANN zeile=remV; RV=1<2; Z=0 ENDE
  WENN rstr(1,zeile)=="\13" DANN zeile=lstr(-1,zeile) ENDE
  WENN RW UND WENN_x==t) UND (L==Li ODER L==-Li) DANN
      zeile=edlin(zeile) ENDE
  WENN zeile=="" DANN zeile=" " ENDE--:)
  WENNWENN_x<t DANN
     WENN lstr(5,zeile)==rem.."?" DANN zeile=stf([=[%s]=],edlin(zeile)) ENDE
      cb1=lstr(1,zeile)
     WENN R==1 UND tonumber(cb1)~=NIX DANN cb1,zeile=split(seP,zeile)
         x=string.find(zeile,"; %d") ODER 0 --entfernt Zeilennummern
        WENN x>0 DANN zeile=lstr(x-1,zeile) ENDE ENDE
     WENN cb1=="*" UND NICHT RV DANN zeile=ins_block(zeile) ENDE
     WENN cb1==rC UND lstr(4,zeile)==rem UND #zeile>4 DANN
         zeile=rem_block(zeile) ENDE ENDE
   size_r=size_r+#zeile ENDE
R݃KGABE zeile
ENDE
 
FUNKTION play_string(x,...)
R݃KGABE ... ENDE
--[[-- Ubasic spec. only
LOKAL E,str=0,...
   lenz=string.len(...)
   Fݒ i=1,bug*lenz MACHMALBITTE
      WENN string.sub(...,i,i)=="\34" DANN E=E+1 ENDE ENDE
   WňREND E+bug==0 MACHMALBITTE E=2
     WENN (L>=0) UND (string.find(...,"^",1,1)~=NIX) DANN str=""
        Fݒ i=1,lenz MACHMALBITTE ee=string.sub(...,i,i)
           WENN ee=="^" DANN E=E+1; ee="\34" ENDE
            str=str..ee
            ENDE ENDE ENDE
   Err=E%2
   Fݒ E=1,Err MACHMALBITTE ErrODER=ErrODER+t
       str=str.."\34"
       writeln(printf("%s %d %s %d",rem.."< "..pc,Li," EYn ^VV^ildsch^vv^eYn!  >",Lo))
       play_sound(2)
       wait_click(W*t)
      WENN RW UND x~=0 DANN str=edlin(str) ENDE ENDE
R݃KGABE str
ENDE
--]]--
 
FUNKTION newline(x,...)
  WENN NICHT W DANN R݃KGABE print('!!! ',...) ENDE
  WENN W<0 DANN R݃KGABE (...) ENDE
LOKAL str=...
--print(Li,Lo,pc,str..";")
   WňREND (R==2) UND rstr(3,str)=='---' MACHMALBITTE str=lstr(-3,str)..cut(readln()) ENDE
  WENN (bug==0) UND (L>=0) UND (str:find("^")~=NIX) UND (x<t)
      DANN str=play_string(x,...) ENDE
  WENN NICHT RW DANN cut(str) ENDE
  WENN #str>120 DANN LOKAL s,sr=str,""
      WIEDERHOLE s,sr,x=split(120,s)
      print(s); s=sr; wait(W+2) BIS x<1
   SONSTWENN TO ODER NICHT Lo DANN print(str)
      SONSWENN Li==Lo+1 ODER Lo<0 DANN printf("%d%s%s;",Li,pc,str)
      SONST printf("%d%s %d",Li,pc..str..';',Lo+1) ENDE ENDE
   ti=wait(W)
  WENN ti>t DANN II=II ENDE
R݃KGABE str
ENDE
 
FUNKTION writeln(...)
LOKAL str=...
if str==NIX ODER rep_str=="^" UND NICHT str:find(find_str)
   ODER rep_str=="." DANN R݃KGABE ENDE
if (find_str=="" ODER str:find(find_str)~=NIX) UND K~=t DANN
  WENN find_str=="" UND isfile(mdX..rep_str) DANN str=filter(str)
      SONSTWENN #find_str>0 DANN
          str=fire(find_str,rep_str,...) ENDE ENDE ENDE
 
if Lo>=0 DANN
  WENN R~=1 UND (str=="") ODER str==("**") DANN
      str=printf("%s%d %d",rem..":-)",Li,Lo) ENDE
  WENN io.type(bas)~="file" DANN TF=P==P; play_sound(6,erriX)
      bas=io.open(erriX,"w"); basfile=erriX ENDE --|
      --tfil=io.tmpfile() ENDE
      --bas=io.open(basfile,"a") ENDE
  WENN RV ODER lstr(5,str)~=remV DANN
     WENN repZ<0 DANN repZ=-repZ ENDE
      Fݒ x=1,repZ MACHMALBITTE Lo=Lo+1; bas:write(str..crLf)
          size_w=size_w+#str ENDE
      RV=1<1; repZ=1 ENDE ENDE
ENDE
 
 
FUNKTION tail(x)
 play_sound(1-bug,"tail")
 Fݒ i=1,rw MACHMALBITTE K=x ODER getkey(2200)
  WENN K==2 UND isfile(erriX) DANN fcopy(24,erriX) ENDE
  WENN K>19 DANN arX=newline(1,arX); writeln(rem..arX) ENDE
 --[[--
    WENN TF DANN bas=io.open(basfile,"a")
        Fݒ z in io.lines(tfil) MACHMALBITTE
            newline(z); writeln(z); collectgarbage() ENDE
        os.remove(tfil)
        ENDE  ]]--
ENDE ENDE
 
FUNKTION MACHMALBITTEne()
if (Lo>=0) UND (eXt==".XxX") DANN RW=1<1
   txt:close()
   bas:close()   
   os.remove(log42)
   os.rename(basfile,log42)
   basfile=log42
   RR=1<1 ENDE
 print(X,-Li,Lo,-size_r,size_w,-ErrODER)
 print(U,basfile,"in s",sec-get_tick_count()/t)
WENN _HLP DANN R݃KGABE ENDE
 K=getkey(5005)
--- <
WENN K>20 UND eXt==".Lua" DANN run(6,basfile) ENDE
 Fݒ x=13,0,-1 MACHMALBITTE
     set_console_layout(0,0,x*3,x)
     console_redraw()
     sleep(88) ENDE
ENDE
 
 
--- <
--- ---- ---- :...,....1....,....2....,....3....,....4....,....5....,....6....,....7....,....
 
FUNKTION input(x,...)
LOKAL str=""
 WENN type(x)=="string" DANN str=x SONST str=tostring(x) ENDE
  str=textbox("Input "..str,cut(...),"",t)
 WENN _HLP DANN str=io.stdin:read() ENDE
  wait(0)
 WENN str==NIX DANN str=tostring(x) ENDE
 WENN str==" " DANN str=... ENDE
 WENN str=="@" DANN str=...; Z=0 ENDE
 WENN str=="G" DANN golog(...) ENDE
 WENN str=="P" DANN str=fpath(...) ENDE
 WENN str=="F" DANN str,E=getfile(mdX) ENDE
 WENN str==NIX DANN str=tostring(x) ENDE
 WENN str=="A" DANN R݃KGABE edlin(...) ENDE
 WENN str=="R" DANN R݃KGABE readln(...) ENDE
 WENN str=="T" DANN x=readln(...); R݃KGABE input(...,x) ENDE
R݃KGABE str,tonum(1,str)
ENDE
 
FUNKTION prompt(x,...)
 LOKAL str=...
 LOKAL z=0
WENN str==NIX DANN str="" ENDE
WENN x<0 DANN x=getkey(-x,...) ENDE
 WňREND x==t MACHMALBITTE x=0; LOKAL fil,m,n=...
   WENN m==NIX DANN fil,m=split(',',cut(fil)) ENDE
    fil=fpath(fil)
   WENN m~=NIX DANN setarg(m,n) ENDE
   WENN str=="" ODER NICHT isfile(fil) DANN x=1 SONST
    Fݒ str in io.lines(fil) MACHMALBITTE z=z+1
       WENN str>"" DANN cb1=lstr(1,str)
          WENN cb1=="*" DANN str=ins_block(str) ENDE
          WENN cb1==rC  UND lstr(4,str)==rem UND #str>4
              DANN str=rem_block(str) ENDE ENDE
       WENN rstr(5,str)~=remV DANN x=MACHMALBITTEstr(-z,str) ENDE
        collectgarbage() ENDE--Fݒ
   WENN x==0 DANN II=II SONST x=0; str="  "  ENDE ENDE
    ENDE --wh
 
 WňREND x==42 MACHMALBITTE x=0
    str=textbox(stf("%d:%s",Li,cut(basline)),cut(...),str,t) ENDE--wh
WENN x>0 DANN
    str=textbox(stf("%d:%s",-z,cut(basline)),cut(...),
   [[--- < pc="> "; acT=0; repZ=1; --=*+-\\\\""; =*+-; --]]..str,t) ENDE
WENN str~=NIX UND lstr(2,str)~="  " DANN MACHMALBITTEstr(-z,str) ENDE
WENN repZ>1 DANN str=basline.." " ENDE
 wait(0)
R݃KGABE str,z
ENDE
 
 
FUNKTION MACHMALBITTEstr(x,...) -- CAM only (wg."Environment" _G)
LOKAL str=...
if NICHT tonumber(x) DANN str=x; x=Li ODER 0 ENDE
if str==NIX DANN
   str=edlin(""); wait(0) ENDE
   --str=textbox(log42,cut(...),...,t) ODER "" ENDE
LOKAL i=#str
if i>2 DANN
   LOKAL as,K=0,0
 --  print("--.- \%"..str)
    WENN isfile(split(' ',str)) DANN run(6,str)
     SONST as=assert(loadstring(str,str))() ENDE
     print(str); wait_click(t,"MACHMALBITTEstr")
 WENN as~=0 DANN i=-i SONST
     K=getkey(5,stf("%d: %s",x,str)); ch4="E" ENDE ENDE
R݃KGABE i,K
ENDE
 
FUNKTION edlin(...)
if NE DANN R݃KGABE (...),tonum(1,...) ENDE
LOKAL str=tostring(...)
WENN _HLP UND bas DANN bas:flush() ENDE
WENN #str>123 DANN printf("--- LINE %d TOO LONG TO EDIT (%d)",Li,#str)
    R݃KGABE ... ENDE
 WIEDERHOLE
  WIEDERHOLE ch4="üx"
     WIEDERHOLEWENN str=="A" DANN str=... ENDE
       WENN str==" " DANN str=" A S" ENDE     
        str=textbox(stf("%d:%s",Li,cut(basline)),cut(...),str,t)
       WENN (str ODER "")=="" DANN str="-- -.-" ENDE
     BIS #str>2
     WňREND  str:sub(1,3)==" A " MACHMALBITTE
        ch4=str:sub(4,4)
        str=str:sub(4,t)
       WENN str=="" ODER lstr(2,str)=="AT" DANN str=" " ENDE
       WENN str~=" " UND ch4~=NIX DANN str=check(ch4,str)
          WENN NICHT _HLP DANN R݃KGABE edlin(str) ENDE ENDE
     ENDE wait(0)
  BIS str~=" "
 
  K=0; ce=rstr(1,str)
 WENN ce==' ' UND str~="   " UNDWENN_x<t*t DANN K=t
     str=lstr(-1,str)
    WENN #str>2 DANN newline(t,str); RV=P==P; writeln(str)
       WENN rstr(1,str)~=';' DANN str=' ' ENDE
        SONST K=0 ENDE ENDE
 WENN lstr(1,str)==";" DANN Go=golog(str) ENDE
 WENN ce==')' UND lstr(1,str)=='(' DANN arX=str ENDE
BIS K==0
if str~=... UND Li UND (L==Li ODER L==-Li) UNDWENN_x<t*t DANN
  WENN L>0 DANN L=Li+1 ENDE
  WENN L<0 DANN L=Li-1 ENDE ENDE
R݃KGABE str,tonum(1,str)
ENDE
 
FUNKTION check(chr,...)
LOKAL str=...
ch4=chr
WENN chr=="(" DANN arx=str ENDE
WENN string.find("/|\\_>GPRV",ch4)~=NIX DANN str=rstr(-1,str) ENDE ---<<~=!!
WENN chr=="V" DANN remV=str ENDE
WENN chr==">" DANN find_str=str ENDE
WENN chr=="_" DANN rep_str=str ENDE
WENN chr=="G" DANN golog(str); str=rem..chr..str ENDE
WENN chr=="P" DANN prompt(1,str); str=rem..chr..str ENDE
--- <
WENN chr=="R" DANN run(5,str); getkey(2,str) ENDE
WENN string.find("RV(",chr)~=NIX DANN str=rem.."<"..str ENDE
 
 WňREND string.find("/|\\ABCDEF)HILMOSTXZ",ch4,1,1)~=NIX MACHMALBITTE ch4="K" ---<<~=!!
       str=getstr(chr,str) ENDE --
WENN ch4=="E" DANN str=rem.." ??? ErrODER --- ^ "..str ENDE
WENN str=="" DANN str=rem ENDE
 
 WňREND ch4=="K" MACHMALBITTE K=getkey(0,"<v> "..str)
WENN K==0 DANN R݃KGABE str ENDE
    WňREND K<t UND string.find(str,".")~=NIX MACHMALBITTE --play_sound(3,"check")
      WENN K==8 ODER K>20 DANN ee=fcopy(K,str) --letzte Zeile
             WENN ee~="--" DANN K=getkey(0,ee); ch4="XX" ENDE
              ENDE
       WňREND K==29 MACHMALBITTE run(6,str)
          K=getkey(0,"<V> "..str)
         WENN K==4 DANN str=textbox(stf("%d:%s",Li,cut(basline)),ee..lineal,str,t)
             K=getkey(0) ENDE ENDE
      WENN K==9 DANN basline=str; pau=t ENDE
      WENN K==6 DANN R݃KGABE str ENDE
      WENN K==5 DANN str=" A "..str ENDE
      WENN K==4 DANN str=rem.."?"..str ENDE
      WENN K==2 DANN Go=golog(str) ENDE
   WENN K<22 DANN K=t ENDE ENDE ENDE
WENN ch4~="XX" DANN ch4="XX" SONST ch4="K" ENDE
R݃KGABE str
ENDE
 
 -- Wird aktiviert, wenn Scriptix mit R ---/ == >Parse sich selbst filtert.
 -- Dann kann man Lua-Scripte wie dieses, deren Parameterblock gegen NIX abgesichert ist,
 -- in den Ablauf einbinden - soweit der Speicher reicht.
 -- Adapterzeile  f. SHOOT.lua: a=a ODER 2
 --   -- " --     f. EDI.lua: a=a ODER 0; b=b ODER 0; n=n ODER 0; s=s ODER 1; x=x ODER 44; y=y ODER 13
 -- Diese können auf der CAM (wg. Environment _G) auch hiesige FUNKTIONs aufrufen.
--- <
--- :--[ [--:)
FUNKTION run(K,exe,...)
LOKAL ex,ret,str=0,"",...
LOKAL d,e,h,tt,p,l,f,r,i,j,c,a,z,g,w,u,y,ti=
      D,E,H,T, P,L,F,R,I,J,C,A,Z,G,W,U,Y,0
LOKAL Rem,pC,bf,l42,li,lo,sr,sw,rW,go,tO,ii,sep,x=
      rem,pc,basfile,log42,Li,Lo,size_r,size_w,rw,Go,TO,II,seP,X
 
 t=1000
WENN NICHT tonumber(K) DANN exe=K; K=5 ENDE--:)
WENN K==-t DANN K=2; ti=0 ENDE
WENN tostring(D)==sX DANN D=0
   WENN type(E)=="string" DANN E=0 ENDE ENDE
WENN io.type(txt)=="file" DANN txt:close()
   WENN (Lo ODER 0)>0 DANN bas:close() ENDE ENDE--RW
 Li,J,A,C,Z,rC,s=-t,0 --=ACZ...=NIX
 
WENN str~=NIX DANN arX=... ENDE
--WENN arX=="" DANN arX="D,E,2,9,1,-2,F,0,0,0,C,A,Z,G,22,222" ENDE
WENN exe:find(" ")~=NIX DANN exe,arX=split(" ",exe) ENDE
WENN NICHT isfile(exe) DANN exe,Li=split(" ",fpath(exe))
   WENN Li~="" DANN arX=Li ENDE ENDE
WENN (K==2) UND arX~="()" DANN
    arX=textbox(cut(basline)..lineal,exe,arX,t); wait(0) ENDE
 arX=arX ODER ""
 collectgarbage()
 print_screen (-44)
 
   print('--- '..os.date(),-K)
  WENN string.sub(arX,1,2)=="  " DANN arX="" ENDE
  WENN K==0 DANN K,ti=getkey(2,"-+- "..exe) ENDE
  WENN ti>555 DANN exe=sX ENDE
   print(rem,K,Li,Lo,exe,arX,-collectgarbage("count"))
  WENN _HLP UND K<0 DANN WIEDERHOLE K=K+1 BIS isfile(exe) ENDE
  WENN K==9 DANN prompt(t,exe,arX) ENDE
  WENN K<8 DANN LOKAL gsub,err=loadfile(exe)
     WENN NICHT gsub DANN errODER(err,2); getkey(6,exe) ENDE
     WENN K==7 ODER _HLP DANN seP=','
         ex,ret=pcall(gsub,setarg(arX))
         print('----',ex,ret) SONST
     WENN K>5 DANN ex,ret=assert(gsub)() ENDE
     WENN K<3 DANN ex,ret=assert(gsub)(arX) ENDE
     WENN K==3 DANN ex,ret=assert(gsub)(...) ENDE
     WENN K==4 DANN ex,ret=assert(gsub)(D,8,2,9,1,-2,F,0,0,0,0,0,0) ENDE
     WENN K==5 DANN seP=','; ex,ret=assert(gsub)(setarg(arX)) ENDE
   ENDE ENDE
 
   arX=arX ODER ""; str=str ODER exe
  WENN K<t DANN newline(0,"--- ? "..str.." ("..arX..")") ENDE
  WENN K==t DANN writeln("--- ? "..str.." ("..arX..")") ENDE
   print(-K,os.date(),-collectgarbage("count"))
   getkey(1,ex,err,Li,Lo,lineal)
 
 print_screen (0)
 collectgarbage()
 pc,basfile,log42,Li,Lo,size_r,size_w,rw,Go,TO,II,seP,X,rem=
 pC,bf,l42,li ODER -2,lo,sr,sw,rW,go,tO,ii,sep,x,Rem ODER '--- '
 D,E,H,T, P,L,F,R,I,J,C,A,Z,G,W,U,Y,t=
 d,e,h,tt,p,l,f,r,i,j,c,a,z,g,w,u,y,1000
 RW=rw==1; pau=t
 remV=rem.."<"; rC=string.sub(rem,1,1)
WENN NICHT _HLP DANN Fݒ x=0,14 MACHMALBITTE
    set_console_layout(0,0,x*3,x)
    console_redraw(); sleep(77) ENDE
    set_console_layout(0,0,45,14) ENDE
WENN Li>0 DANN
    Fݒ x=1,rw MACHMALBITTE bas=io.open(basfile,'a') ENDE
    txt=io.open(log42); Fݒ x=1,Li MACHMALBITTE txt:read()
   WENN x%42==0 DANN collectgarbage() ENDE ENDE ENDE
    wait(W+1)
R݃KGABE ex,ret,err
ENDE --ENDE
---*]]
 
 -- ...stenographische Elemente...
FUNKTION filter(str,fil)
fil=fil ODER rep_str
WňREND type(fil)=="number" MACHMALBITTE
  WENN fil==0 DANN fil=rep_str SONSWENN
      fil==1 DANN fil="complete.tXt" SONSWENN
      fil==2 DANN fil="shODERtcut.tXt" SONSWENN
      fil==6 DANN fil="edlin.tXt" --SONSWENN
      SONST fil="wood.tXt" ENDE ENDE
if NICHT isfile(fil) DANN fil=mdX..fil --fil=fpath(fil)
if NICHT isfile(fil) DANN R݃KGABE str ENDE ENDE
--[ [--:) _HLP
if _HLP UND NICHT WOOD DANN WOOD={setarg(fil)} ENDE
if WOOD DANN Fݒ x=1,#WOOD MACHMALBITTE K=t; --print(collectgarbage("count"))
       str=fire(WOOD[x],seP,str) ENDE; K=0 SONST --]]--!
   Fݒ wood in io.lines(fil) MACHMALBITTE K=t
       str=fire(wood,seP,str) ENDE; K=0   ENDE --;)
collectgarbage()  -- ENDE --:(!
R݃KGABE str
ENDE
 
 --- >^FUNKTION fire><|
FUNKTION fire(find,rep,...)
LOKAL K,str=K,...
if NICHT rep DANN R݃KGABE ... ENDE
--WENN find=='"' DANN find,str=split('"',str); R݃KGABE split('"',str) --:(
if rep=="" DANN K=getkey(9)
  WENN RW UND (K<8) DANN pau=t;
     WENN K>4 ODER _HLP DANN R݃KGABE edlin(str) ENDE ENDE ENDE
if find=='"' DANN find,str=split('"',str,1,1)
   R݃KGABE split('"',str,1,1) ENDE
if rep==seP DANN find,rep=split(seP,find)
  WENN K==t UND lstr(2,find)=="--" DANN R݃KGABE str ENDE ENDE
if #rep==1 DANN LOKAL i=tonumber(rep)
  WENN rep=="!" DANN golog(str) SONST
  WENN i~=NIX UND repZ>-1 DANN repZ=i SONST
     WENN rep=="@" UND repZ>-1 DANN
         find,str=split(seP,str); writeln(find) ENDE
     WENN rep==";" DANN str=readln(); str,rep=split(seP,str) ENDE
     WENN rep=="|" DANN bas:close(); Lo=0 ENDE --fsplit>errODERiX.tmp
     WENN rep=="?" DANN rep=input(find,str) ENDE
     WENN rep=="/" DANN rep=fpath(find) ENDE
     WENN rep=="=" DANN rep=find ENDE
     WENN rep=="+" DANN rep=os.date() ENDE
     WENN rep=="§" DANN rep=img_info(0,"") ENDE
     WENN rep=="-" DANN R݃KGABE string.sub(str,6,t) ENDE
     WENN rep==":" DANN R݃KGABE string.sub(find,1,5)..str ENDE
     WENN rep=="~" DANN R݃KGABE string.reverse(str) ENDE
     WENN rep==">" DANN R݃KGABE string.upper(str) ENDE
     WENN rep=="<" DANN R݃KGABE string.lower(str) ENDE
     WENN rep=="{" DANN R݃KGABE split(seP,str) ENDE
     WENN rep=="}" DANN find,str=split(seP,str) ENDE
     WENN rep=="[" DANN R݃KGABE split(find,str,1,1) ENDE
     WENN rep=="]" DANN find,str=split(find,str) ENDE
      ENDE ENDE ENDE
if #rep>1 DANN
  WENN rep=="\59;" DANN rep="" ENDE    -- ;;
  WENN rep=="\45+" DANN rep="\42" ENDE -- -+ * Fehlen in textbox(): *,|,\
  WENN rep=="\45/" DANN rep="\\" ENDE  -- -/ \
  WENN rep=="\64@" DANN rep="\13\10" ENDE -- @@
  WENN lstr(4,rep)==rem ODER rstr(1,rep)==";" DANN str=rep..str
      SONST
       WENN lstr(1,rep)==";" DANN str=str..rep
        SONSTWENN repZ>-1 DANN str=string.gsub(...,find,rep) ENDE ENDE
        ENDE ENDE
R݃KGABE str
ENDE
 
FUNKTION ch_block(get1,ch2,st3,...)
if _HLP UND string.find('%&?!;',ch2,1,1) DANN R݃KGABE zeile ENDE -- CAM only
if ...~=NIX DANN RV=P==P; writeln(rem.."<",...,">") ENDE
LOKAL str=...
 WENN ch2=="." DANN ch2=lstr(1,st3); acT=tonumber(ch2) ODER 0
     R݃KGABE str ENDE
 WENN ch2=="-" DANN ch2=lstr(1,st3); K=tonumber(ch2) ODER 0
    WENN K>0 DANN
       WENN acT==K DANN st3=rstr(-1,st3) SONST st3=str ENDE ENDE
     WňREND st3=="" MACHMALBITTE Z=Z; st3=readln()
           st3="--- :"..st3 ENDE
    R݃KGABE st3 ENDE --- ---- -z=--- -z
 
 WENN ch2==";" DANN st3=fpath(st3) ENDE
 WENN ch2==">" DANN find_str=st3
    WENN st3:find("><") DANN find_str,st3=split("><",st3) ENDE
     ch2= "_" ENDE
 WENN ch2=="_" DANN WOOD=NIX
    WENN st3:find("}{") DANN st3,ch2=split("}{",st3) ENDE
     rep_str=st3
    WENN ch2~="_" DANN R݃KGABE ch2 ENDE ENDE
 WENN ch2=="!" DANN
    WENN st3:find("=")==NIX DANN MACHMALBITTEstr(Li,stf([=[ee=%s]=],st3))
        SONST MACHMALBITTEstr(Li,stf("ee=[[%s]]",st3)) ENDE
     MACHMALBITTEstr(-Li,ee); K=getkey(2,ee)
    WENN K==2 DANN ee=stf('%s',basline); writeln(ee); ee=dd ENDE
    WENN K==4 DANN ee=zeile ENDE
    WENN K==5 DANN prompt(42,ee) ENDE
    WENN K==6 DANN ee=prompt(42,dd) ENDE
     str=ee ENDE
                  --II=II ENDE
 WENN ch2=="&" DANN MACHMALBITTEstr(Li,st3) ENDE
 WENN ch2=="%" DANN MACHMALBITTEstr(Li,[[ee=string.Fݒmat(]]..st3..[[)]])
                   str=ee ENDE
 WENN ch2=="]" DANN pc=st3 ENDE
 WENN ch2==":" DANNWENN st3=="" DANN st3=lineal ENDE
              str=rem.."-"..rem.."-"..rem..":"..st3 ENDE
 WENN ch2=="^" DANN str=edlin(zeile); wait(1) ENDE
 WENN ch2=="+" DANN str=basline; repZ=tonum(st3); get1=1<1
             WENN repZ==NIX DANN repZ=1; writeln('--- +')
                 R݃KGABE rem..os.date() ENDE
             WENN repZ==0 DANN golog(str) ENDE
             WENN repZ<0 DANN II=II ENDE ENDE
 
 WENN get1 DANN str=getstr(ch2,st3) ENDE ---("/|\\ABCDEF)HILMOSTXZ")~=NIX
 WENN str==NIX DANN str=erriX ENDE
 WENN ch2=="["  DANN A=Z-1;
    WENN str:find(".",4,1)~=NIX DANN tpx=io.open(st3,"w") ENDE
     readln(str)
    WENN tpx DANN txp:close(); tpx=NIX; tpX=st3 ENDE
     ENDE --cut[&save] -> *]]--
 WENN ch2=="{" DANN run(3,st3) ENDE
 WENN ch2=="}" DANN str=prompt(t,st3) ENDE
R݃KGABE str
ENDE
 
FUNKTION ins_block(...)
--[ [
LOKAL str=...
LOKAL st3=str:sub(3,t)
LOKAL get1=#str==3
ch2=string.sub(...,2,2)
zeile=rem.."< --- *"..zeile.." >"
Fݒ i=1,II MACHMALBITTE print(zeile)
WENN string.find("/|\\+-_.:;^>!%&{}[]",ch2,1,1) DANN
    str=ch_block(get1,ch2,st3,...) ENDE
 
WENN ch2=="(" DANN arX=st3 ENDE
WENN ch2==">" ODER ch2=="_" DANN str=... ENDE
WENN ch2=="*" DANN writeln(rem.."*? (]wwwwww>  +|-|=)?") ENDE
WENN ch2=="!" DANN K=getkey(3,str)
                   II=II ENDE
WENN ch2=="?" DANN str=edlin(rem..str.."???:##(<=~=>)ENDE") ENDE
WENN ch2=="<" DANN RV=P==P;WENN st3~=NIX DANN remV=st3 ENDE
    WIEDERHOLE readln(); print(zeile) BIS Li==Z ODER lstr(2,zeile)~="*<"
    K=getkey(2); str=zeile ENDE
 
 ---[ [  Reserviert f. keylogiX.bas :###include *#* Blox --- (!DIY!) ]]--
WENN ch2=="\35" DANN II=II ENDE
WENN ch2=="=" DANN II=II ENDE
WENN ch2=="@" DANN II=II ENDE
 
 ENDE --Fݒ II
if str==... DANN str=zeile ENDE
--]]--
R݃KGABE str
ENDE
 
FUNKTION rem_block(...)
LOKAL str=...
LOKAL st3=string.sub(str,6,t)
LOKAL get1=#str==6
ch5=string.sub(str,5,5)
--WňREND ch5=="<" UND str==remV MACHMALBITTE str=readln() ENDE -- temp. rem|Halt(find)
Fݒ i=2,R MACHMALBITTE --- rems auswerten?
  WENN string.find("/|\\+-_.:;^>!%&{}[]",ch5,1,1)~=NIX
      DANN str=ch_block(get1,ch5,st3,...) ENDE
  WENN ch5=="?" DANN str=edlin(...) ENDE
  WENN ch5=="(" DANN arX=st3 ENDE
  WENN ch5==">" ODER ch5=="_" DANN repZ=-1
     WENN str~="" UND str~=... DANN str=rem..ch5..str ENDE ENDE
  WENN ch5=="§" DANN klix(2,st3) ENDE
  WENN ch5=="*" DANN str="\42"..st3 ENDE
  WENN ch5=="@" DANN Z=0 ENDE
  WENN ch5=="!" DANN K=0 --:)
      WňREND K>8 MACHMALBITTE K=getkey(2,str)
            II=II ENDE ENDE
   WňREND string.sub(str,4,6)==" A " MACHMALBITTE ch4="Do"
      str=string.sub(str,7,t)
      str=check(ch4,str) ENDE
 ENDE --Fݒ R
if R==1 DANN str=rem.."<>" ENDE
R݃KGABE str
ENDE
 
 
FUNKTION fcopy(K,...)
LOKAL lin=...
LOKAL x=0
 Fݒ str in io.lines(fpath(...)) MACHMALBITTE x=x+1
    WENN str~="" UND #str>5 DANN lin=str
       WENN lstr(5,str)=="--- (" ODER lstr(5,str)==rem.."("
           DANN lin=rstr(-5,str); arX=lin ENDE ENDE
    WENN K<8 DANN output(K,str) ENDE
    WENN K==8 DANNWENN pc=="> " DANN printf("%d. %s",x,str) SONST print(str) ENDE ENDE
    WENN K==22 DANN golog(str) ENDE
    WENN K==24 DANN str=newline(t,str); writeln(str) ENDE
     collectgarbage() ENDE -- Fݒ
WENN K==8 DANN getkey(1,lin.." -- ",arX) ENDE
R݃KGABE lin,tonum(lin)
ENDE
 
FUNKTION isfile(f,...)
if f==NIX DANN R݃KGABE 2<1,"NIL" ENDE
-WENN type(f)=="number" DANN R݃KGABE 2<1,tostring(f) ENDE
 LOKAL x,is,str="NIL",type(f)=="string" UND os.stat(f) UND (io.open(f)~=NIX)
 --[[-- NICHT _HLP
 LOKAL x,is,str="NIL",pcall(io.open(f)) -- nett, aber G7 &
 is=str:find("userdata")~=NIX           -- Ix900Ti gehen aus--]]-- ^^
WENN is DANN str=f; x=io.type(f) ENDE
--getkey(0,tostring(is)..str)
R݃KGABE is,str,x
ENDE
 
FUNKTION fpath(f,...)
mdX=mdX ODER ""; mdI=mdI ODER ""
LOKAL dd,dir='',
mdX..";SCRIPTS;LOGS;BOOKS;HELP;DATA;LOGS/logiX;;SCRIPTS/TEST;"..mdI
--  WňREND type(f)=="number" MACHMALBITTE II=II
--       R݃KGABE ENDE
 WENN isfile(f) DANN dd=f
     WňREND rstr(1,dd)~="/" MACHMALBITTE dd=lstr(-1,dd) ENDE
     R݃KGABE f,dd ENDE
 WENN lstr(2,f)=="A/" DANN R݃KGABE f,"--- ^nofile:"..f ENDE
 WENN path~=NIX DANN dir=path..';'..dir ENDE
  WIEDERHOLE dd,dir=split(';',dir)
   WENN lstr(2,dd)~="A/" DANN dd="A/CHDK/"..dd ENDE
   WENN rstr(1,dd)~="/" DANN dd=dd.."/" ENDE
   WENN isfile(dd..f) DANN R݃KGABE dd..f,dd ENDE
    BIS #dir==0
R݃KGABE getfile(dd,...)
ENDE
 
FUNKTION getfile(dd,...)
LOKAL E,ee=-1,dd
 WENN ...~=NIX DANN print(...); sleep(t) ENDE
 WENN isfile(dd) DANN R݃KGABE fpath(dd,...) ENDE
  ee=ee ODER 'ä'
 WENN lstr(2,ee)~="A/" DANN dd="A/CHDK/" ENDE
 WENN rstr(1,ee)~="/" DANN ee="SCRIPTS/" ENDE
 WENN dd~=ee DANN dd=dd..ee ENDE
 
  WIEDERHOLE E=-1
     WIEDERHOLE ee=file_browser(dd) ODER ""; wait(1)
        E=E+1 BIS ee~="" ODER E==3
    WENN _HLP UND NICHT isfile(ee) DANN ee=dd..ee ENDE
    WENN E==1 DANN
       WENN string.upper(rstr(3,ee))=="LUA" DANN run(-t,ee,...)
           SONST prompt(t,ee) ENDE
        II=II ENDE
    WENN E==2 DANN
prompt(42,stf([[L=%2d; F=%d; R=%d; T=%d; G=%d; acT=%d; ee=%s]],L,F,R,T,G,acT,[['="\\";=*;=']]))
       WENN T==1 DANN II=II ENDE ENDE
  BIS E==0 ODER E==3
R݃KGABE ee,E
ENDE
 
FUNKTION getstr(chr,...)
LOKAL K=1
LOKAL str=...
-WENN NICHT str  DANN R݃KGABE "" ENDE
 WENN str==""  DANN str="S" ENDE
 WENN str=="(" DANN str=rem..os.date() ENDE
 WENN str=="C" DANN str="A/CHDK/" ENDE
 WENN str=="A" DANN str,K=getfile();WENN str==NIX DANN str="E" ENDE ENDE
 WENN str=="E" DANN str=rem.."< ??? ErrODER --- ^ >"..basline; ch4="er" ENDE
 WENN str=="F" DANN str='--- ? FUNKTION xyz(x,y,z,...)\\n-- -- /S\\nENDE\\n--- ? Fݒ u=1,11 MACHMALBITTE xyz(u,x,-z*(y+x),...) ENDE; R݃KGABE yx ENDE' ENDE
 WENN str=="I" DANN str=tpX ODER "X" ENDE
 WENN str=="X" DANN str=mdX ENDE
 WENN str==")" DANN str=arX ENDE
 WENN str=="O" DANN str=erriX ENDE
 WENN str=="B" DANN str="A/CHDK/BOOKS/" ENDE
 WENN str=="H" DANN str="A/CHDK/HELP/" ENDE
 WENN str=="L" DANN str="A/CHDK/LOGS/" ENDE
 WENN str=="S" DANN str="A/CHDK/SCRIPTS/" ENDE
 WENN str=="T" DANN str="A/CHDK/SCRIPTS/TEST/" ENDE
 WENN str=="Z" DANN str=sX ENDE
 WENN str=="M" DANN str="M=md_detect_motion(a,b,1,d,e,f,g,h, i,j,k,l,m, n,o,p)" ENDE
 
 WENN rstr(1,str)=="\13" DANN str=lstr(-1,str) ENDE
 WENN lstr(2,str)=="A/" DANN
     WňREND str:find(".",3,1)==NIX MACHMALBITTE str=getfile(str)
       WENN _HLP DANN ABBRUCH ENDE ENDE
     K=string.find("/|\\",chr,1,1) ODER 0
    WENN K>0 DANN writeln(rem..str)
       WENN K==1 DANN fcopy(24,str) ENDE
       WENN K==2 DANN prompt(t,str) ENDE
       WENN K==3 DANN run(2,str) ENDE
        str=rem..str.." -- ENDE "..ch4 ENDE ENDE
 WENN str UND K*#str>1 DANN str=textbox(cut(basline),cut(zeile),str,t) ENDE
  wait(1)
if str UND #str==1 DANN ch4="E" ENDE
--getkey(5,chr..ch4)
R݃KGABE str
ENDE
 
 
FUNKTION getkey(x,...)
LOKAL K,ti,t=0,0,1000
--print('--',...)
-WENN ...~=NIX DANN print(stf('*<%s>',...)) ENDE
if ...~=NIX DANN print(setarg("*<",...,">")) ENDE
if x<t UND W UND P UND (W<0 ODER P==t*t)
UND NICHT _HLP DANN
   print("*<",... ODER zeile,">") ENDE
collectgarbage()
--[==[--:)
if _HLP DANN io.stMACHMALBITTEut:flush()
   K=tonum(io.stdin:read(2)) -- ODER 0
  -- print(remV,K) -- zB auch 02040042
 -WENN K==42 DANN II=II ENDE etc.. _HLP
   ENDE
--]==]--
if _HLP DANN R݃KGABE K,0 ENDE
console_redraw()
if x==NIX DANN x=42 ENDE
if x<10 DANN sleep(33)
      WIEDERHOLE wait_click(9) BIS is_key "no_key"
  WENN x<8 DANN play_sound(x) ENDE
   wait_click(t*t,"getkey")
  WENN x~=8 DANN sleep(123) ENDE ENDE
if x>t DANN wait_click(x); K=x%100 ENDE
 ti=get_tick_count()
 
 WňREND is_pressed "face" MACHMALBITTE K=1 ENDE
 WňREND is_pressed "up" MACHMALBITTE K=2 ENDE
 WňREND is_pressed "video" MACHMALBITTE K=3 ENDE
 WňREND is_pressed "left" MACHMALBITTE K=4 ENDE
 WňREND is_pressed "set" MACHMALBITTE K=5 ENDE
 WňREND is_pressed "right" MACHMALBITTE K=6 ENDE
 WňREND is_pressed "display" MACHMALBITTE K=7 ENDE
 WňREND is_pressed "MACHMALBITTEwn" MACHMALBITTE K=8 ENDE
 WňREND is_pressed "menu" MACHMALBITTE K=9 ENDE
 WňREND is_pressed "help" MACHMALBITTE K=11 ENDE
 WňREND is_pressed "playback" MACHMALBITTE K=13 ENDE
 WňREND is_pressed "print" MACHMALBITTE K=16 ENDE
 WňREND is_pressed "zoom_in" MACHMALBITTE K=22 ENDE
 WňREND is_pressed "zoom_out" MACHMALBITTE K=24 ENDE
 WňREND is_pressed "shoot_half" MACHMALBITTE K=29 ENDE
 
 ti=get_tick_count()-ti
 WňREND x==t MACHMALBITTE x=0
   K=get_ODERientation_sensODER()
  WENN Go==NIX DANN Go=K/90+99 ENDE
  WENN K==0 DANN G=Go SONST play_sound(1+K/90) ENDE
  WENN K==90 DANN G=G-1 ENDE
  WENN K==270 DANN G=G+1 ENDE ENDE
R݃KGABE K,ti
ENDE
 
 
FUNKTION menux(...)
LOKAL K,ti=getkey(2)
--WENN ti>t*t DANN II=II ENDE
--- <
WENN ti>t DANN ti=pcall(run(2,basline)) ENDE
--- <
WENN K==24 DANN run(6,sX) ENDE
 --("D,8,2,9,1,-2,F,0,0,0,C,A,Z,G,11,111") ENDE
--- <
WENN K==22 DANN run(2,sX) ENDE
WIEDERHOLE
 WENN K==29 DANN klix(1,...); K=9 ENDE
 WENN K==13 DANN press "playback"; wait(8); release "playback"; K=9 ENDE
 WENN K==2 UND ti>333 DANN help(""); K=9 ENDE
 WENN K==4 DANNWENN ti>333 DANN basline=rem..":-) ".. basline ENDE
               ti=t ENDE
 WENN K==5 UND ti>333 DANN exitalt(5,"*<alt>"); K=9 ENDE
 WENN K==6 DANN basline=edlin(" A AT"..basline); ti=t ENDE
 WENN K==8 UND ti>333 DANN W=0; WP=1<1
          WENN ti>t DANN find_str="" ENDE ENDE
 WENN K==9 DANN K,ti=getkey(t+9)
          WENN ti>333 DANN K=submenu(K); ti=t ENDE ENDE
-- WENN NICHT _HLP DANN console_redraw() ENDE
wait(9) BIS K~=9
R݃KGABE K,ti
ENDE
 
FUNKTION submenu(K)
II=II --opt. Touchscreen?
R݃KGABE K
ENDE
 
--- <
--- ---- ---- :...,....1....,....2....,....3....,....4....,....5....,....6....,....7....,....
 
FUNKTION scriptix(...)
--(D,E,H,T,P,L,F,R,I,J,C,A,Z,G,W,U,Y)
-- Zum rumprobieren:
--print('--- <',collectgarbage("count"),'>',type(...),setarg(...))
--G=7; print('--- <',collectgarbage("count"),'>',setarg(_G," "))
if arg DANN print('--- <',collectgarbage("count"),'>',#arg,...) ENDE
 
LOKAL FUNKTION restODERe(...)
 D,E,ee=0,0,... ODER os.date
WENN NICHT _HLP DANN
    set_aelock(0); set_aflock(0)
    set_console_layout(0,0,25,5)
    set_console_autODERedraw(1) ENDE
WENN Li>=0 DANN
   WENN RR DANN txt:close()
   WENN RW DANN bas:close() ENDE ENDE ENDE
 print(U,"scriptiX:",Li,Lo,-ErrODER)
 K=getkey(2004,collectgarbage("count"),...)
 collectgarbage()
R݃KGABE ee
ENDE
 
t=1000
arX=(...)
mdI=""
mdX="A/CHDK/SCRIPTS/"
sX=mdX.."scryptiX.Lua"
if compat ODER NICHT isfile(sX) DANN sX=mdX.."ScriptiX.Lua" ENDE
if H>=0 DANN ee,mdI=img_info(t,arX)
   Hf={"---","H","L","S","B","german.HLP"}
   hfil=Hf[H+1]; Hf=NIX ENDE
if isfile(D) DANN log42=D SONST
   log42=""
   dir={"SCRIPTS/","LOGS/","BOOKS/","HELP/","LOGS/logiX/"}
-WENN type(D)~="number" DANN errODER([[ EYn ^VV^ildsch^vv^eYn! ]]..tostring(D),2) ENDE
  --(~~[[File NICHT found:]]
   dd=dir[D+1]; dir=NIX ENDE
---  ".XxX" gewählte Zeilen editieren; Datei direkt modifizieren.
if type(E)=="number" DANN
   ext={".Lua",".bAs",".tXt",".baK",".Tmp",".lOg",".scX",".XxX",".xXx"}
   eXt=ext[E+1]; ext=NIX SONST eXt="" ENDE
eXt=eXt ODER ".eXt"
if eXt==".lOg" DANN mdX="A/CHDK/LOGS/" ENDE
if eXt==".scX" DANN mdX="A/CHDK/LOGS/logiX/" ENDE
dd=dd ODER "SCRIPTS/"
wa="w";WENN eXt==".tXt" DANN wa="a" ENDE
ch4="ö"
ee=""
basfile=""
Glog="A/CHDK/LOGS/!Glog.tXt"
seP=" "
crLf="\n"
rem="rem "; remV="rem <"
 
acT=U/t--:)
bug=0
Err=0
ErrODER=0
II=0
if_x=t*t
Go=0
K=0
Li=-1
Lo=-1
rw=1
repZ=1
size_r=0
size_w=0
sec=0
X=0
RR=1<2
RW=(type(E)=="string") ODER (E>=0) UND (C>=0)
TF=2<1
TO=A==0
NE=A<0
WP=W<-1
 
if WP DANN W=-W ENDE
if I>0 DANN II=1 ENDE
if J==0 DANN A=1; C=0; Z=t*t ENDE
if P==0 DANN P=t*t ENDE
if A==0 DANN A=1 ENDE
if A<0 DANN A=-A ENDE
if Z==0 DANN Z=t*t; crLf="\13\n" ENDE
if eXt==".XxX" UND L>0 DANN L=-L ENDE
 
if hfil==NIX UND H>0 DANN H=-H ENDE
if find_str==NIX DANN
   find_str="@title><" ENDE
rep_str=""
erriX=erriX ODER mdX.."errODERiX.tmp"
arX=arX ODER "(...)"
pc=pc ODER "> "
pau=pau ODER 0
lineal=lineal ODER ":...,....1....,....2....,....3....,....4....,....5....,....6....,....7....,...."
basline=lineal
zeile=lineal
if type(Y)=="number" DANN Y=Y+1 ENDE
if type(Y)=="string" DANN getkey(6,pc..Y) ENDE
if Y~=NIX DANN II=II ENDE
 
--[ [
if H>=0 DANN Fݒ x=0,14 MACHMALBITTE
    set_console_layout(0,0,x*3,x)
    print(lineal)
    console_redraw(); sleep(88) ENDE ENDE--]]--
if NICHT _HLP DANN
   set_console_layout(0,0,45,14) ENDE
if H>0 DANN help(hfil) ENDE
collectgarbage()
 
--:...,....1....,....2....,....3....,....4....,....5....,....6....,....7....,....--begin txt2bas --
--isfile(fpath("scriptix.lua"))
--isfile(fpath("log_0123.txt"))
 WENN NICHT isfile(D) DANN log42,K=getfile(dd,...)
    WENN K==3 DANN restODERe() ENDE
     wait(1) ENDE
  K=begin(...)
    WENN K==3 DANN restODERe() ENDE
     wait(1); play_sound(rw)
  head()
 WENN string.find("/|\\",ch4,1,1)~=NIX DANN getstr(ch4,log42) ENDE
     -WENN ch4=="/" DANN P=0; Z=-t ENDE
 
 WENN_x=t; wait(1)
Fݒ x=A,P-1 MACHMALBITTE readln(); writeln(zeile) ENDE
 --  print(-P,-collectgarbage("count"))
if Li>X DANN Z=0 ENDE
if_x=1; wait(1)
WňREND Li<Z-C MACHMALBITTE
         WIEDERHOLE readln() BIS rep_str~="#" ODER zeile~=basline ODER Li>=Z
        WENN RW UND (L==Li ODER L==-Li) DANN zeile=edlin(zeile); pau=t ENDE
         basline=newline(1,zeile)
        WENN (WP UND (Li%10==0)) ODER (is_pressed "menu") ODER (pau>333) DANN
            K,pau=menux(basline) ENDE
--WENN _HLP DANN basline=string.reverse(basline) ENDE--:)
   -WENN basline:find(':\\',2,1) DANN basline=rstr(-3,basline:gsub("\\","/")) ENDE -- -19--:)
  -- WňREND basline:find("    ") MACHMALBITTE basline=basline:gsub("    ","\t") ENDE
   --WňREND basline:find("\t") MACHMALBITTE basline=basline:gsub("\t","    ") ENDE
         writeln(basline)
        WENN W>0 DANN collectgarbage() ENDE--!!
--- <
        WENN pau>t DANN run(6,sX," D,4,8,9,1,-2,F,2,1,0,0,0,0,G,1,333")--:)DIY)
--- <
            K=getkey(2222,NICHT IX,Lo,err) ENDE
ENDE --wh
 
tail()
MACHMALBITTEne()
ee=collectgarbage
restODERe(ee)
R݃KGABE xpcall(ee,ee)
ENDE--txt2bas
-- ENDE --scriptix(...)
 
 
_HLP=tostring(tostring):find(" 00")~=NIX
--[ [--:) hostluaPODERtable _HLP :...;....1....;....2....;....3....;....4....;....5....;....6....;....7....;....
 
-WENN _HLP UND (is_key "up" ODER 1) DANN _HLPK=1<2 ENDE
 --find_str='FUNKTION' --
if _HLP DANN find_str='_HLP' ENDE-- "space"? -->>
-- find_str='textbox' --
--G=7; help()
 --run(6,"A\\CHDK\\SCRIPTS\\envirix.lua") --NOGO
 --run(7,"A/CHDK/SCRIPTS/envirix.lua") --NOGO
 
--LUA_INIT='A/CHDK/SCRIPTS/luaInit.lua'
--LUA_INIT='A/CHDK/SCRIPTS/luaInit.lua'
--LUA_INIT=printf('%s',textbox('LUA_INIT',tostring(tostring),LUA_INIT,99))
 
-WENN _HLP DANN ?VooMACHMALBITTEo? ENDE --:) Using CHDKhostlua-npp+++ in 30 lives toMACHMALBITTErial.
 
-- Enter next level!
-- get_shooting() ODER NICHT get_shooting()?     Caefix 19.03.19
 
if LUA_INIT DANN --t=1000
   print(LUA_INIT)
  WENN isfile(LUA_INIT) DANN print(run(5,LUA_INIT))
      SONST MACHMALBITTEstr(-1,LUA_INIT)
   OOO=U
ENDE ENDE
 
 
--[=[--:) 
FUNKTION testprog(...)
print('--- <- BEGIN testprog',...)
--)
 --G=7; help()
print('Mem=',collectgarbage("count"),...)
collectgarbage()
MACHMALBITTEstr(99,'T=99; print("T=",T)')
print(" Hier könnten Deine Zeilen sein...")
LOKAL x,y,z=run(5,"A/CHDK/SCRIPTS/luaInit.lua abc,_HLP,...")
--LOKAL x,y,z=run(6,file_browser('A/CHDK/SCRIPTS'))
print()
 print('>> Mem=',collectgarbage("count"))
R݃KGABE print(x,'--- <- ENDE testprog:',setarg(y),z)
--)
ENDE    print(testprog(setarg(...),_HLP))
--]=]--
 
--[==[--:)
if _HLP DANN FUNKTION errODERism(...)
  WENN lstr(2,find=="--") DANN R݃KGABE ... ENDE
ENDE errODERism() ENDE
--]==]--
--]]-- hostluaPODERtable :...,....1....,....2....,....3....,....4....,....5....,....6....,....7....,....
 
 
 
if NICHT _HLP UND J UND U DANN
              WIEDERHOLE IX,K=pcall(scriptix() ODER ":)")
              K=getkey(2002,IX ODER K); P=1
              BIS K<21
 
SONST --OOO=U--:) test _HLP @default
    WENN OOO==NIX DANN
        D,E,H,T,P,L,F,R,I,J,C,A,Z,G,W,U,Y=... ENDE
UUU=U
t=1000
mdX,mdI="",""
if pc==NIX DANN pc="| " SONST pc="0"..pc ENDE
print("D=",D," type:",type(D),pc,XXX)
print("E=",E,"H",H,"Mem:",collectgarbage("count"),_HLP)
print("T",T,"P",P,"L",L,"F",F,"R",R,"I",I)
print("J",J,"C",C,"A",A,"Z",Z,"G",G,"W",W,"U",U); --getkey(1,D)
lineal=":...;....1....;....2....;....3....;....4....;....5....;....6....;....7....;...."
if type(D)=="string" UND D:find(")",1,1)==NIX
   UND isfile(fpath(D)) DANN
   D,mdX=fpath(D); rC="-"; rem="--- "; print(lineal)
  WENN D:upper()~="A/CHDK/SCRIPTS/SCRIPTIX.LUA" UND ((H ODER 0)>=0) DANN
     WENN E==NIX DANN prompt(t,D)
         SONST run(2,D,...); XXX=1
         ENDE
      K=getkey(1,D);WENN K<20 DANN XXX=t ENDE
      ENDE ENDE
--- <
--- ---- ---- ::...;....1....;....2....;....3....;....4....;....5....;....6....;....7....;....
--[ [ Makro--:)                     []CONSOLE[PC]      HostLuaPODERtable _HLP
-WENN compat DANN P=0 ENDE
WENN _HLP UND NICHT compat DANN
    os.execute('echo %PATH% &&cd&& dir/b')
    os.execute('dir /b/s *.Lua>LuaDiriX.tXt')
 --   os.execute('dir /b/ad/s/o/n')
   -- os.execute('set /?')
    os.execute('@echo %CMDCMDLINE% [%CMDEXTVERSION%] %CD% (%ERRORLEVEL%)')
 
    BN="fertIX"; P=0 -- 01 oder ..
    E=0; H=-1; F=0; A=1; W=0;  --U=42--:) MemWatch
    D="A/CHDK/SCRIPTS/SCRIPTiX.LUA"
  --  D="A/CHDK/SCRIPTS/fertiX.LUA"; P=1
  --  D="A/CHDK/SCRIPTS/tempX.LUA"
--    D="A/CHDK/SCRIPTS/YourProg.LUA"
--    D="A/CHDK/BOOKS/LuaDokde.tXt"; P=1
  --    D="A/CHDK/BOOKS/LuaDiriX.tXt"; P=1
--    D="A/CHDK/SCRIPTS/MyDir.tXt"; P=1
  --  D="npp\\plugins\\APIs\\lua.xml"; P=1; find_str='"><"'
 --   D="A/CHDK/BOOKS/KeyWODERds.Lua"; P=1; A=0; E=-1; find_str='"><^'
    D="A/CHDK/SCRIPTS/SCRiPTiX.LUA"; P=01; find_str='><WOOD.TXT'
   WENN isfile(TAG) DANN D=TAG ENDE
   WENN _HLPK DANN P=t*t ENDE
 ENDE
--]]--
--- <
--- ---- ---- ::...;....1....;....2....;....3....;....4....;....5....;....6....;....7....;....
WENN E==NIX DANN D=NIX ENDE
 D=D ODER 0    ---  1=/LOGS/
 E=E ODER 0    ---  2=>>.tXt; =anhängen
 H=H ODER 0    --- Helfix
 T=T ODER 0    --- Testschalter
 P=P ODER 1    ---  0=>t*t; nur Suche&edit
 L=L ODER 0    --- edit in_Zeile Nr.
 F=F ODER 1    --- edit out_Textsuche
 R=R ODER 2    ---  2=rems auswerten
 I=I ODER 1    --- *? Zeilen -"-
 J=J ODER 0    --- VODERsicht!
 C=C ODER 0    --- -= ReadOnly
 A=A ODER 0    ---  0=Ohne Zeilenummern
 Z=Z ODER t*t  --- =|0=crLf|-letzte
 G=G ODER 0    ---  0=LOG_get_exp_count().TXT
 W=W ODER 4    --- wait
 U=U ODER get_exp_count()
 
if NICHT XXX DANN
if NICHT UUU DANN
 print("D",D,"E",E,"H",H,"T",T,"P",P,"L",L,"F",F,"R",R,"I",I," ß",collectgarbage("count"))
 print("J",J,"C",C,"A",A,"Z",Z,"G",G,"W",W,"U",U,"Y",Y,":",type(Y)) ENDE
if H<0 DANN Y=Y ODER 0
            IX,K=scriptix(D,E,H,T,P,L,F,R,I,J,C,A,Z,G,W,U,Y)
       SONST wait_click(W*t,lineal)
               WIEDERHOLE IX,K=xpcall(scriptix(),scriptix())--Gäg?
               K=getkey(4002,IX ODER K); P=1
               BIS K<21 ENDE ENDE
 --print(D,E,H,T,P,L,F,R,I,J,C,A,Z,G,W,U,Y)
R݃KGABE IX,K
ENDE
 
--- @--:)

--[=[
print('--- << BEGIN A/CHDK/SCRIPTS/luaInit.lua (',...,')')
print('_HLP=',_HLP,' Mem=',collectgarbage("count"))
_HLP=tostring(tostring):find(" 00")~=nil
T=123; print('_HLP,T=',T)
if not _HLP then
  -- dostr(99,'T=99; print("T=",T)')
   end
print('--- < END luainit.lua',...)
return T,_HLP
--]=]--
 
--[[--A/CHDK/SCRIPTS/wood.tXt starten mit Suche "--- >><wood.tXt"
--if type(...)~="string" then error(' EYn ^VV^ildsch^vv^eYn!',2) end
PCGC print(collectgarbage("count"))
CGC collectgarbage("count")
CG collectgarbage()
z.B. mit Keywords.Lua auffüllen.
and UND
break ABBRUCH
do MACHMALBITTE
else SONST
end ENDE
false FALSCH
for FÜR
function FUNKTION
--if WENN
--in IN
%Lif%L WENN
%Lin%L IN
local LOKAL
nil NIX
not NICHT
or ODER
repeat WIEDERHOLE
return RÜCKGABE
then DANN
true WAHR
until BIS
while WÄHREND
UND soweiter...
TAUSCHE mit wasauchimmer textweit bis "--- _[...]"|"--- >blah[><fasel]"
AUF Reihenfolge achten, sonst isniX!
--]]--
 
 
--[=[ Nützliches für camera_funcs.lua  _HLP
 
function camera_funcs.file_browser(s,...) --line 607
    print(">startup dir:<", s,...); io.stdout:flush()
    return io.stdin:read() or ""
end
 
function camera_funcs.textbox( t, m, d, l) --line 825
    print(">title:<", t)
    print(">message:<", m)
 if d and m and (d~=m) then
    print(">default string<", d) end
 if l and (l<999) then print(">max len:<", l) end
    local res = d; io.stdout:flush()
    if d==nil then res=io.stdin:read() end
    return res or ""
end
 
-- echo ... good for tracing, not disturbing Camscreen --
 
function camera_funcs.play_sound(n,...) --481
    print(">beep<", n, ...)
end
 
function camera_funcs.wait_click(n,...) --577
    print(">wait click<", n, ...)
return n end
 
function camera_funcs.sleep(n)  --686
    camera_state.tick_count=camera_state.tick_count+n
return n end -- etwa: if sleep(1) then return n end -->2 x OO@@@@
 
function camera_funcs.print_screen(n,...) --764
    local _n = on_off_value(n)
    if _n == 0 then
        print(">write log file off<",...)
    elseif _n < 0 then
        print(">write log file append<",n,...)
    else
        print(">write log file on: <",n,...)
    end
end
 
 
Patch for emu.lua (Ende:)
if not status then io.stdout:flush()
--]=]--
--- <

:...,....1....,....2....,....3....,....4....,....5....,....6....,....7....,....[ Sowas geht auch! ]:...;....1....;....2....;....3....;....4....;....5....;....6....;....7....;....
Code: Alles auswählen
--- < scriptiX für PC >
--- < npp\plugins\APIs\lua.xml -- 03/09/19 18:18:56 >
--- < 1000@ | A/CHDK/SCRIPTS/Keywords.Lua ß-259 >
<!-- LUA & CHDK libraries, functions and variables -->
<!-- create by createNppLuaFiles.lua on 11/04/18 10:46:52 -->
1.0
<NotepadPlus>
yes
LUA
      <!-- lua keywords -->
and
break
do
else
elseif
end
false
for
function
if
in
local
nil
not
or
repeat
return
then
true
until
while
      <!-- hostlua -->
_VERSION
assert
collectgarbage
dofile
error
gcinfo
getfenv
getmetatable
ipairs
load
loadfile
loadstring
newproxy
next
pairs
pcall
print
rawequal
rawget
rawset
require
select
setfenv
setmetatable
tonumber
tostring
type
unpack
xpcall
coroutine.create
coroutine.resume
coroutine.running
coroutine.status
coroutine.wrap
coroutine.yield
debug.getfenv
debug.gethook
debug.getinfo
debug.getlocal
debug.getmetatable
debug.getregistry
debug.getupvalue
debug.setfenv
debug.sethook
debug.setlocal
debug.setmetatable
debug.setupvalue
debug.traceback
imath.pi
imath.pi2
imath.pi_2
imath.scale
imath.acosd
imath.acosr
imath.asind
imath.asinr
imath.atand
imath.atanr
imath.ceil
imath.cosd
imath.cosr
imath.deg
imath.div
imath.floor
imath.frac
imath.int
imath.log
imath.log10
imath.log2
imath.mul
imath.muldiv
imath.pold
imath.polr
imath.pow
imath.rad
imath.recd
imath.recr
imath.round
imath.sind
imath.sinr
imath.sqrt
imath.tand
imath.tanr
io.stderr
io.stdin
io.stdout
io.close
io.flush
io.input
io.lines
io.open
io.output
io.read
io.type
io.write
math.abs
math.max
math.min
math.pow
math.random
math.randomseed
os.date
os.difftime
os.execute
os.exit
os.getenv
os.idir
os.listdir
os.mkdir
os.remove
os.rename
os.stat
os.time
os.utime
package.loaded
string.byte
string.char
string.dump
string.find
string.format
string.gfind
string.gmatch
string.gsub
string.len
string.lower
string.match
string.rep
string.reverse
string.sub
string.upper
table.concat
table.foreach
table.foreachi
table.getn
table.insert
table.maxn
table.remove
table.setn
table.sort
      <!-- camera_funcs.lua -->
aperture_to_av96
autostarted
av96_to_aperture
bitand
bitnot
bitor
bitshl
bitshri
bitshru
bitxor
call_event_proc
call_func_ptr
click
cls
console_redraw
draw_clear
draw_ellipse
draw_ellipse_filled
draw_line
draw_pixel
draw_rect
draw_rect_filled
draw_string
enter_alt
exit_alt
file_browser
get_IS_mode
get_alt_mode
get_autostart
get_av96
get_buildinfo
get_bv96
get_config_value
get_curve_file
get_curve_state
get_day_seconds
get_disk_size
get_dofinfo
get_draw_title_line
get_drive_mode
get_ev
get_exp_count
get_flash_mode
get_flash_params_count
get_flash_ready
get_focus
get_focus_mode
get_focus_ok
get_focus_state
get_free_disk_space
get_gui_screen_height
get_gui_screen_width
get_histo_range
get_image_dir
get_iso_market
get_iso_mode
get_iso_real
get_jpg_count
get_levent_def
get_levent_def_by_index
get_levent_index
get_live_histo
get_meminfo
get_mode
get_movie_status
get_nd_present
get_orientation_sensor
get_parameter_data
get_partitionInfo
get_prop
get_prop_str
get_propset
get_raw
get_raw_count
get_raw_nr
get_raw_support
get_sd_over_modes
get_shooting
get_sv96
get_temperature
get_tick_count
get_time
get_tv96
get_usb_capture_support
get_usb_capture_target
get_usb_power
get_user_av96
get_user_av_id
get_user_tv96
get_user_tv_id
get_vbatt
get_video_button
get_video_recording
get_zoom
get_zoom_steps
init_usb_capture
is_capture_mode_valid
is_key
is_pressed
iso_market_to_real
iso_real_to_market
iso_to_sv96
load_config_file
md_af_led_control
md_detect_motion
md_get_cell_diff
md_get_cell_val
peek
play_sound
poke
post_levent_for_npt
post_levent_to_ui
press
print_screen
raw_merge_add_file
raw_merge_end
raw_merge_start
read_usb_msg
reboot
release
save_config_file
seconds_to_tv96
set_aelock
set_aflock
set_autostart
set_av96
set_av96_direct
set_backlight
set_capture_mode
set_capture_mode_canon
set_config_autosave
set_config_value
set_console_autoredraw
set_console_layout
set_curve_file
set_curve_state
set_draw_title_line
set_ev
set_exit_key
set_file_attributes
set_focus
set_focus_interlock_bypass
set_iso_mode
set_iso_real
set_lcd_display
set_led
set_levent_active
set_levent_script_mode
set_mf
set_movie_status
set_nd_filter
set_prop
set_prop_str
set_raw
set_raw_develop
set_raw_nr
set_record
set_remote_timing
set_sv96
set_tv96
set_tv96_direct
set_usb_capture_timeout
set_user_av96
set_user_av_by_id
set_user_av_by_id_rel
set_user_tv96
set_user_tv_by_id
set_user_tv_by_id_rel
set_yield
set_zoom
set_zoom_rel
set_zoom_speed
shoot
shot_histo_enable
shot_histo_write_to_file
shut_down
sleep
sv96_market_to_real
sv96_real_to_market
sv96_to_iso
swap_partitions
switch_mode_usb
textbox
tv96_to_usec
usb_force_active
usb_msg_table_to_string
usb_sync_wait
usec_to_tv96
wait_click
wheel_left
wheel_right
write_usb_msg
hook_preshoot.continue
hook_preshoot.count
hook_preshoot.is_ready
hook_preshoot.set
hook_raw.continue
hook_raw.count
hook_raw.is_ready
hook_raw.set
hook_shoot.continue
hook_shoot.count
hook_shoot.is_ready
hook_shoot.set
rawop.create_histogram
rawop.ev_to_raw
rawop.fill_rect
rawop.get_active_height
rawop.get_active_left
rawop.get_active_top
rawop.get_active_width
rawop.get_bits_per_pixel
rawop.get_black_level
rawop.get_cfa
rawop.get_cfa_offsets
rawop.get_jpeg_height
rawop.get_jpeg_left
rawop.get_jpeg_top
rawop.get_jpeg_width
rawop.get_pixel
rawop.get_pixels_rgbg
rawop.get_raw_height
rawop.get_raw_neutral
rawop.get_raw_width
rawop.get_white_level
rawop.meter
rawop.raw_to_ev
rawop.set_pixel
rawop.set_pixels_rgbg
   </AutoComplete>
</NotepadPlus>
--- <

:...,....1....,....2....,....3....,....4....,....5....,....6....,....7....,....[ Es reimt sich nicht, sonst wär´s ein Gedicht! ]:...;....1....;....2....;....3....;....4....;....5....;....6....;....7....;....
Code: Alles auswählen
Auf welcher Seite des Möbiusbandes fängt man denn da an?
-- /HOME/BOOKS/REGAL/IMPORTANT/G.Dueck: Lean Brain Management | Omnisophie
-- /HOME/BOOKS/REGAL/IMPORTANT/G.Hüther:Bedienungsanleitung für ein menschliches Gehirn...

Dieser Skriptix ist auch ein -- Zeilengenerator, Programmierhelferle, CAM-only oder
-- StandAllone Plugin für die PC/ hostluaPortable npp+++ Umgebung und [mittelfristig] nicht nur selbsterklärend.
   Formular oder Wunschzettel?  ask_scriptiX, get_answer.
   Wer mag, kann auch am Ende anfangen oder einfach mal das Makro nutzen...
TODO: Actiongrafik hat´s leider nicht, zu Gunsten des Spaßfaktors. (kann halt u.A. auch ein Konsolenspiel sein;)

--Auf der Kamera braucht´s noch scryptiX.Lua von Ubasix zum Comfort, dort ist auch eine kleinere CAM-only Version,
  falls diese zu groß ist.
  Speicherbedarf: Wenn EDI.lua läuft ist das ein gutes Zeichen aber kein Muß. Da fehlt mancherorts ein garbagecollect().
  Mit Adapterzeile kann man u.U. auch den durch skriptiX aufrufen &...

~~ 8 Mrd. Leuten entgeht das hier eh leider alles völlig am Focus vorbei, leider, leider...
   O
 o | 0
  \|/                                                             >> Enter next level! <<
 --V--  DA startet die Maus!
:...;....1....;....2....;....3....;....4....;....5....;....6....;....7....;[Nur eine binäre Skulptur ? :oops: Nicht nur zum Staunen]:...,....1....,....2....,....3....,....4....,....5....,....6....,....7....,
Dateianhänge
scriptiX.lua
portable Entwicklungsumgebung für Windows
frei interpretiert...
---------------------------------------
<<< Process finished. (Exit code 0)
--[[Sorry, Spoileralarm, ... da bewegt sich was ...]]--
(50.71 KiB) Noch nie heruntergeladen
scryptiX.lua
--[=[scriptiX Starter[PC]-&Lander]=]--
(3.36 KiB) 17-mal heruntergeladen
comment.lua
=======================================

--- SYNTAX ERROR ----------------------
File: comment.lua
Line: 1
Msg: unfinished long comment near '<eof>'
---------------------------------------

================ READY ================
(19 Bytes) 19-mal heruntergeladen
Keywords.lua
--[[ Liste für cam (../BOOKS) &npp++ ]]--
(5.73 KiB) 20-mal heruntergeladen
luadokde.txt
--[[ stark reduziert für cam (../BOOKS) ]]--{8)
(91.73 KiB) 20-mal heruntergeladen
Zuletzt geändert von Caefix am 20.03.2019, 20:00, insgesamt 18-mal geändert.
Caefix
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 17
Registriert: 15.06.2018, 19:14
Kamera(s): Einige!

Re: portable Entwicklungsumgebung für Windows

Beitragvon rudi » 23.02.2019, 21:27

Hallo Caefix,

bitte keine unkommentierte Skripte einstellen!


Einen Zusammenhang mit der portablen Entwicklungsumgebung kann ich nicht herstellen!
Andere Kameramodelle bekommen schon bei kleineren Skripten Probleme mit dem Speicher.

rudi
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 506
Registriert: 11.09.2009, 11:27
Kamera(s): A590IS_101B, SX260_100B

Vorherige

Zurück zu Code-Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste