1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. uuchip

Beiträge von uuchip

  • Q: AutoIt Interpreter pur ohne Installation?

    • uuchip
    • 18. Juli 2012 um 09:56

    Hallo und guten Tag,

    für eine technische (mehr oder weniger) Bastelei benötige ich die volle Funktionalität des AutoIt Interpreters, der spätere Benutzer soll alle Autoitfunktionen sowie spezielle UDF nutzen können und zwar dynamisch so wie er es gerade braucht. (D.h. ein Compile Script to exe wäre nicht hilfreich).

    Fragen dazu:
    - Kann bzw. darf man den Interpreter (und die Standard UDF) als Bestandteil eines einfachen Installationspakete benutzen, ohne das man AU3 komplett installieren muss?
    - Gibt es evtl. schon ein Tool, das aus bestehenden allgemeinen eigenen UDF (die man nicht als Ganzes weitergeben möchte) nur die Funktionen automatisch raus filtert die man für die speziellen UDF benötigt? (Beispiel: In einer eigenen Mathe UDF sind X Funktionen vorhanden, von denen aber eine weitere UDF nur eine Teilmenge benötigt)
    - Wenn man die Funktionen der UDFs noch verschlüsseln könnte wäre das auch nicht schlecht, geht das grundsätzlich?

    Vielen Dank. Mit freundlichen Grüßen
    uuchip

  • Imaginäre Zahlen in AutoIt

    • uuchip
    • 18. Juni 2012 um 15:13

    Moin Moin,

    ich an Deiner stelle würde das Rad nicht zum x-ten mal neu erfinden sondern z.B. die yacas dll einbinden.
    Ein kleiner Fred dazu
    Hier gibts es die DLL
    Ein kleiner Überbklick wie yacas mit complexen Zahlen arbeitet

    Ein (kleines) Problem wird sein, die DLL Output entsprechend zu "parsen". Aber das ist IMO reine String- Akrobatik, und die beherrscht AU3 sehr gut, im Gegensatz zum erstellen von eigenen Typen oder (noch besser) Objekten/ Methoden.

    Grüße
    uuchip

    P.S.: Wenn man unbedingt selber was basteln möchtest, wirf mal eine Blick auf
    https://autoit.de/index.php?page=Thread&threadID=17920


    Zitat von James1337

    Guten Abend Forum :)

    Da ich momentan verschiedenste Formeln automatisieren will, muss ich mit imaginären Zahlen arbeiten.
    Da diese von AutoIt aber leider nicht unterstützt werden, würde ich mich über jeden guten Workaround freuen.

    Meine Algorithmen haben ich bereits so überarbeitet, dass man nur noch die Variable $i deklarieren muss.
    Folgendes geht natürlich nicht:

    [autoit]

    Global Const $i = Sqrt(-1)

    [/autoit]

    Schonmal danke im Vorraus!

    Regards, James

    Alles anzeigen
  • wie yacas dll unter au3 nutzen?

    • uuchip
    • 26. April 2012 um 10:26

    Hallo AspirinJunkie & progandy und die anderen,

    herzlichen Dank für die Lösung! :):):)
    Und weil man hier so "gut geholfen bekommt", werde ich autoit natürlich nicht untreu!

    Megens Grüße
    uuchip

    P.S.: Wie gesagt die Lösung hat evtl. auch Bedeutung für andere Programmierer die sich mit Mathe beschäftigen. yacas ist zwar kein maxima oder maple aber doch verdammt leistungsfähig, ich würde mal behaupten es kann mehr als man in der Oberstufe Matheleistung so braucht

    P.P.S.: Ich brauch's für http://projecteuler.net/, dieser link sei jedem empfohlen der gerne programmiert und knobelt.

  • wie yacas dll unter au3 nutzen?

    • uuchip
    • 26. April 2012 um 08:13

    [quote='Techmix','index.php?page=Thread&postID=252758#post252758']Nabend!
    Auf dem ersten Blick würde ich sagen, das du die Globale Variable VOR allen Funktionen Deklarieren mußt.

    Moin Moin,

    danke für die Antwort, aber daran liegt es leider nicht, in AU3 kann "global" auch in einer Funktion stehen. Und grundsätzlich wird die yacasdll.dll ja auch aufgerufen nur die Datenübergabe an yacas_eval klappt leider nicht. Ich denke/ glaube das diese Funktion einen Pointer auf einen null terminierten string erwartet (pchar) aber ich bekomme es nicht auf die Reihe, z.B.

    Code
    $struct_Buffer = DllStructCreate("char[80]");
       DllStructSetData($struct_Buffer,1,$s)
       $re = dllcall($dllh,"none","yacas_eval","ptr:cdecl",DllStructGetPtr($struct_Buffer))

    funzt auch nicht. ?(

    Wenn das weiter so geht, werde ich autoit untreu und code wieder in freepascal ;)

    Gruß
    uuchip

    P.S.: Kann man eigentlich Funktionen einer dll über eine zweite dll aufgrufen? Wenn das funktionieren würde bastle ich mir eine Interface dll für yacas mit freepascal

  • wie yacas dll unter au3 nutzen?

    • uuchip
    • 25. April 2012 um 12:48

    Hallo Zusammen,

    meiner einer wäre sehr dankbar wenn hier ein "DLL Kündiger" antworten würde.

    Das Problem, ich möchte die yacasdll.dll unter Autoit3 nutzen, aber es funktioniert leider nicht so wie erhofft. Die Problemlösung ist evtl. auch für andere Leute interessant weil yacas ein kleines aber IMO mächtiges Computer Algebra System ist.
    (Allgemeine info zu yacas, und hier gibts es die DLL)

    Unter freepascal sieht eine lauffähige Lösung so aus:

    Code
    program yacas;
    
    
     const YACASAPI='yacasdll.dll';
    {
    /** yacas_init : initialize Yacas. This function has to be called before calling the
     *  other functions. This function establishes a main evaluation environment
     *  for Yacas expressions to be simplified in.
     */
     YACASDLL_API void yacas_init(); }
     procedure yacas_init; cdecl; external  YACASAPI;
    
    
    
    
    {
    /** yacas_eval : evaluate an expression. The result (or possible error)
     *  can be obtained through the yacas_error and yacas_result functions,
     *  if so desired.
     */
     YACASDLL_API void yacas_eval(char* expression); }
     procedure yacas_eval(expression:Pchar);cdecl; external  YACASAPI;
    
    
    
    
     {
    /** yacas_error : return a pointer to a string explaining the error
     *  if an error occurred, or NULL otherwise.
     */
      YACASDLL_API char* yacas_error();
     } function yacas_error:PChar; cdecl; external  YACASAPI;
    
    
     {
    /** yacas_result : return a string representation of the result of
     *  evaluating an expression. This function is only meaningful if
     *  there was no error. In the case of an error, the return value
     *  of yacas_result should be considered undefined.
     */
    YACASDLL_API char* yacas_result();}
     function yacas_result:PChar; cdecl; external  YACASAPI;
    
    
    {
    /** yacas_output : return pointer to output printed while evaluating
     * an expression.
     */
    YACASDLL_API char* yacas_output(); }
     function yacas_output:PChar; cdecl; external  YACASAPI;
    
    
     {
     /** yacas_exit : clean up all things related to the main Yacas
     *  evaluation environment
     */
    YACASDLL_API void yacas_exit();  }
     procedure yacas_exit; cdecl; external  YACASAPI;
    
    
     {
    /** yacas_interrupt : interrupt a calculation.
     */
    YACASDLL_API void yacas_interrupt();
      }
    procedure yacas_interrupt(); cdecl; external  YACASAPI;
    
    
    begin
    
    
    yacas_init;
    yacas_eval('1+1');
    writeln(yacas_result);
    yacas_exit;
    
    
    end.
    Alles anzeigen

    Normalerweise wäre es kein Problem das in Autoit um zu setzten, dachte ich :(

    Code
    func yacas_init()
       local $re
       global $dllh = dllopen("yacasdll.dll")
       $re = dllcall($dllh,"none","yacas_init")
    ;   writeln("init>"&@error)
    endfunc
    
    
    func yacas_eval($s)
       local $re
       $ll = 100;try this
       $re = dllcall($dllh,"none","yacas_eval","str:cdecl",$s)
    ;   writeln("eval>"&@error)
    endfunc
    
    
    func yacas_result()
       local $re
       $re = dllcall($dllh,"str:cdecl","yacas_result")
    ;   writeln("result>"&@error)
       return $re[0]
    endfunc
    
    
    yacas_init()
    yacas_eval("1+1")
    writeln(yacas_result())
    dllclose("yacas.dll")
    Alles anzeigen

    Die yacas_init und yacas_result Funktion funktionieren auch in AU3, leider aber das wichtige yacas_eval nicht.
    Bach einiger Überlegung glaube ich, dass der Grund dafür ist, dass der C Ausdruck "YACASDLL_API void yacas_eval(char* expression)" keinen "str:cdecl" erwartet sondern einen Pointer auf einen char oder so etwas ähnliches. Ich steh nun wie der Ochs vorm Berg weil, 1. der freepascal compiler es scheinbar auch ohne pointer aufrufen kann, und ich mich mit den DllStructCreate und DllStructSetData gedönse in AU3, besonders wenn pointer im Spiel sind leider gar nicht auskenne.

    Vielen Dank. Mit freundlichen Grüßen
    uuchip

  • Nicht linearer mehrdimensionaler Gleichungslöser nach Newton

    • uuchip
    • 28. Dezember 2011 um 16:10
    Zitat von AspirinJunkie

    Bekomme leider folgende Fehlermeldung:

    Code
    matrix00.au3(54,24) : ERROR: NumLn(): undefined function.
       $m = NumLn($filename)

    Wenn man nur den solver nutzt wird diese Funktion nicht gebraucht( oder doch???). Evtl. tritt der Fehler auf wenn man die anderen Funktionen aus matrix00.au3 nutzen will? Bitte durch "$m=_FileCountLines($filename)" ersetzen.

    Können auch überbestimmte Systeme damit gelöst werden?


    In der jetzigen Form leider nicht, weil für jeden Iterationsschritt die inverse Jacobi- Matrix schnöde nach Gauß berechnet wird. Daraus folgt n Unbekannte benötigen nun mal genau n Gleichungen.
    Gruß
    uuchip

  • Nicht linearer mehrdimensionaler Gleichungslöser nach Newton

    • uuchip
    • 28. Dezember 2011 um 13:03

    Hallo Zusammen,

    wer wollte nicht schon immer mal nichtlineare mehrdimensionale Gleichungen nummerisch lösen? ;)

    Weil ich es manchmal beruflich benötige, habe ich mir mit AU3 eine relativ einfache Lösung gebastelt, diese ist evtl. auch für andere Leute brauchbar, denn wenn man es ein wenig aufhübscht könnte man so etwas wie den M$ Excel Solver damit programmieren.

    Hier ein Beispiel Programm:

    [autoit]

    #include "solver01.au3"

    [/autoit][autoit][/autoit][autoit]

    ; Weitere Infos unter http://de.wikipedia.org/wiki/Newton-Ve…hrdimensionalen

    [/autoit][autoit][/autoit][autoit]

    ; Gleichungssystem 1 aus "fa1.csv"
    ; x1^2-2*x2=10
    ; sin(x1)+4*x2=20;
    dim $a[1][1], $b[1][1], $x[1][1], $D[1][1]
    csv2Fmatrix("fa1.csv",$a,$b)
    erzeuge0Matrix($x,$a[1][0],1)
    ; Startwerte für Iteration
    $x[1][1]=10
    $x[2][1]=10
    ; Mehrdimensionale Lösung nach Newton
    $x=solverM($a,$b,$x,1E-3,200,1E-5)
    _arraydisplay($x, "Eine Lösung für x1=$x[1][1], x2=$x[2][1]")
    ; Probe
    msgbox(0,"x1^2-2*x2=10",$x[1][1]^2-2*$x[2][1]&"=10")
    msgbox(0,"sin(x1)+4*x2=20",sin($x[1][1])+4*$x[2][1]&"=20")

    [/autoit][autoit][/autoit][autoit]

    ; Gleichungssystem 2 aus "fa2.csv"
    ; x1/x3+2*x2+x3=10
    ; x1+4*x2+x3*x1=5
    ; x1^2+x2+x3=1
    dim $a[1][1], $b[1][1], $x[1][1], $D[1][1]
    csv2Fmatrix("fa2.csv",$a,$b)
    erzeuge0Matrix($x,$a[1][0],1)
    ; Startwerte für Iteration
    $x[1][1]=1
    $x[2][1]=1
    $x[3][1]=1
    ; Mehrdimensionale Lösung nach Newton
    $x=solverM($a,$b,$x,1E-3,200,1E-6)
    _arraydisplay($x, "Eine Lösung für x1=$x[1][1], x2=$x[2][1], x3=$x[3][1]")
    msgbox(0,"x1/x3+2*x2+x3=10",$x[1][1]/$x[3][1]-2*$x[2][1]+$x[3][1]&"=10")
    msgbox(0,"x1+4*x2+x3*x1=5",$x[1][1]+4*$x[2][1]+$x[3][1]*$x[1][1]&"=5")
    msgbox(0,"x1^2+x2+x3=1",$x[1][1]^2+$x[2][1]+$x[3][1]&"=1")

    [/autoit]

    Alles weiter (die benötigten units und die csv Beispiel Dateien) im Anhang!

    Bei der Nutzung bitte beachten:
    - Lösung muss vollständig im Bereich der Reellen-Zahlen liegen!!!
    - Es wird immer nur eine Lösung gefunden
    - Diese Lösung kann je nach Startwert verschieden sein

    Weitere Infos unter
    http://de.wikipedia.org/wiki/Newton-Ve…hrdimensionalen

    Gruß
    uuchip

    Dateien

    solver01a.zip 6,27 kB – 472 Downloads
  • Problem mit Zeichenketten die aus langen Zahlen bestehen

    • uuchip
    • 6. November 2011 um 13:06
    Zitat von misterspeed

    Du hast zwar nicht wirklich geschrieben wofür du das brauchst und wo deine lange Zahl herkommt (eigtl sollte die sowieso als String vorliegen, denn Autoit selbst erzeugt keine integer die das Maximum überschreiten), aber du kannst auch mal nach der bignum.au3 suchen, vielleicht löst die ja dein Problem.

    BigInteger UDF

    Ich bearbeite z.Z. das Problem 55 von Euler.net. Zum finden der Lösung mit AutoIt (ist gerade fertig, bei Interesse poste ich das mal) ist die bignum UDF sehr hilfreich. Aber auch die funktioniert nur richtig wenn man die ganz großen Zahlen als string eingibt.

    z.B. _bignum_add(<große Zahl 1>,<große Zahl 2>) ist ungleich
    _bignum_add("<große Zahl 1>","<große Zahl 2>")

  • Problem mit Zeichenketten die aus langen Zahlen bestehen

    • uuchip
    • 6. November 2011 um 12:40

    @all

    Danke für die Resonanz. ich habe kapiert das
    $x=<große Zahl> ungleich $y="<große Zahl>" ist.

    Man sollte es als feature betrachen :)
    Grüßle
    uuchip

  • Problem mit Zeichenketten die aus langen Zahlen bestehen

    • uuchip
    • 6. November 2011 um 12:10
    Zitat von BugFix

    Na überlegt doch mal, welche Zahlen maximal in AutoIt angezeigt werden. (Integer) :whistling:
    Wer es ohne Überlegen testen will: Einfach in einer Schleife mit Ziffer 9 beginnen (ConsoleWrite) und die Zahl jeweils um eine 9 ergänzen.
    Ich glaube, dann wird klar warum die Stringlänge nicht stimmen kann.

    ok, ist klar. Aber meiner einer braucht die große Zahl nicht als Zahl sondern als Zeichenkette und ich dachte string erzwingt eine Umwandlung.

    Gruß
    uuchip

  • Problem mit Zeichenketten die aus langen Zahlen bestehen

    • uuchip
    • 6. November 2011 um 11:56
    Zitat von hauke96

    keine ahnung, aber ich habe da nochetwas interessantes rausgefunden, was ich mir auch nicht erklären kann, nämlich das hier:


    Hallo,

    es scheint so, als ob AutoIt versucht trotz der Funktion string die "Eingabe" als Zahl zu interpretieren, und da ist bei max. 19 Stellen "Ende im Gelände". Wenn man ein "&" dazwischen bringt funktioniert es. Aber eine Variable auf zu eine Tour zu bearbeiten wird schwierig weil z.B. stringlen nicht funktioniert.

    Gruß
    uuchip

    Code
    msgbox(0,"Funktion &", stringlen(4668731596684&224866951378664))
  • Problem mit Zeichenketten die aus langen Zahlen bestehen

    • uuchip
    • 6. November 2011 um 11:23

    Hallo und guten Morgen,

    kann mir evtl. ein/e Kundige/r sagen warum nachfolgende Auswertungen mit stringlen nicht die gleichen Ergebnisse bringen?

    Vielen Dank. MfG
    uuchip

    Code
    msgbox(0,"Funktion string", stringlen(string(4668731596684224866951378664)))
    msgbox(0,'Funktion ""', stringlen("4668731596684224866951378664"))
  • Zerlegung einer natürlichen Zahl in ihre Primfaktoren

    • uuchip
    • 13. September 2011 um 11:05

    Hallo,

    anbei ein kleines Skript welches (für AUTOIT3) relativ schnell natürliche Zahlen in ihre Primfaktoren zerlegt. Ein Nachteil für kleine Zahlen könnte sein, dass vor Verwendung der Funktion immer erst eine Datei mit Primzahlen eingeladen werden muss. Bei großen Zahlen ist das aber IMO ein erheblicher Geschwindigkeitsvorteil, weil die aufwändige Berechnung der Primzahlen entfällt.

    Gruß
    uuchip

    Dateien

    primteiler.zip 190,09 kB – 361 Downloads
  • Mal was technisches - Flächenwerte von beliebigen Vielecken

    • uuchip
    • 14. April 2010 um 19:51

    Hi Bert,

    vielen Dank für Deinen Hinweis. Anbei die aktuelle und hoffentliche fehlerfreie Version. Manchmal ist verleitet der Komfort von Autoit (z.B. Typen und Variablen müssen je nicht deklariert werden) zu einem etwas lockerem Programmierstiel. Z.B. der Freepascal Compiler hätte sowas *nicht* durchgehen lassen. ;)

    Gruß
    uuchip

    Zitat von AutoBert

    Hallo uuchip,

    in deinem Beispielskript includest du _qwerte02.au3, im ZIP befindet sich aber _qwerte03.au3. Eventuell kommen ja daher diese Fehlermeldungen/Warnungen

    Code
    >"C:\Programme\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Programme\AutoIt3\Downloads\uuchip\Qwerte\qwertetest.au3" /autoit3dir "C:\Programme\AutoIt3" /UserParams    
    +>23:18:09 Starting AutoIt3Wrapper v.2.0.1.24    Environment(Language:0407  Keyboard:00000407  OS:WIN_XP/Service Pack 3  CPU:X86 OS:X86)
    >Running AU3Check (1.54.19.0)  from:C:\Programme\AutoIt3
    C:\Programme\AutoIt3\Downloads\uuchip\Qwerte\_qwerte03.au3(71,22) : WARNING: $ps: possibly used before declaration.
       if not _qwerte($ps,
    ~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Downloads\uuchip\Qwerte\_qwerte03.au3(120,16) : WARNING: $Isxy: possibly used before declaration.
       return $Isxy
    ~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Downloads\uuchip\Qwerte\_qwerte03.au3(120,16) : ERROR: $Isxy: undeclared global variable.
       return $Isxy
    ~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Downloads\uuchip\Qwerte\qwertetest.au3 - 1 error(s), 2 warning(s)
    !>23:18:09 AU3Check ended.rc:2
    >Exit code: 0    Time: 3.476
    Alles anzeigen

    mfg (Auto)Bert

    Dateien

    Qwerte_04.zip 2,55 kB – 322 Downloads
  • Mal was technisches - Flächenwerte von beliebigen Vielecken

    • uuchip
    • 12. April 2010 um 10:43

    Hallo,

    evtl. ist angehängte UDF interessant für Techniker im Bereich Stahl/ Hoch/ oder Maschinenbau.

    Beschreibung:
    _qwerte02.au3
    Stand : 12.04.2010
    Beschreibung : Berechnet die wesentlichen Flächenwerte eines beliebigen Vielecks
    der Techniker benötigt diese Werte z.B. zur
    Festikeits- oder Durchbiegungsberechnung von Bauteilen

    Benutzung auf eigene Gefahr - Ich hafte nicht für Fehler!
    Viele Grüße
    uuchip

    1. Feeler hab ich schon gefunden drum die Änderung

    Dateien

    Qwerte.zip 2,55 kB – 350 Downloads
  • Fehler in <date.au3> ????

    • uuchip
    • 24. März 2010 um 20:15
    Zitat von Schnuffel

    ich würde jetzt mal sagen, nachdem ich 3 Programme im I-Net befragt habe, dass der 1.1.1900 ein Montag ist.

    Edit: ich weiß nicht was Du hast, selbst in deiner AUfgabe wird der Tag als Montag vorgegeben ;)
    http://projecteuler.net/index.php?section=problems&id=19

    Arggg.... Danke für den Hinweis Mea Culpa - ich code z.Z.zuviel
    Gruß

  • Fehler in <date.au3> ????

    • uuchip
    • 24. März 2010 um 19:49

    Hallo Zusammen,

    ich wurschtel mich gerade so durch die Aufgaben von http://projecteuler.net es macht echt süchtig, und einige Aufgaben kann man sogar mit au3 Lösen :-).

    Speziell http://projecteuler.net/index.php?section=problems&id=19 (Aufgabe 19) wäre normal mit au3 kein Problem, denn es gibt ja die date.au3 UDF. So schon so gut, aber es klappt nicht eiderweil z.B. der

    _DateToDayOfWeek(1900, 1, 1) in au3 eine 2 ergibt (= Montag), aber dieser Tag ist def. ein Sonntag (= 1).
    Weiss jemand Rat? Vielen Dank.

    tschöööö mit öööö
    Lutz

  • Q: Selbstmodifizierendes Programm möglich?

    • uuchip
    • 10. Juli 2009 um 18:42

    Hallo Andy, hallo Bitboy,

    vielen Dank eure Antworten, ein konkretes Problem habe ich nicht, meiner einer möchte nur mal die Grenzen von AU3 ausloten.
    Wenn Autoit zur Laufzeit sich selbst z.B. durch userinputs programmieren könnte, wäre z.B. ein einfügen von neuen Funktionen (bzw. ändern von alten) und sofortiges Ausführen dieser Funktionen möglich. In LISP, LOGO bzw. FORTH ist dies m.W. eingebaut und erlaubt ein extrem flexibeles Programmieren.

    Die Lösung mit -> Progi schreibt sich selbst + Erweiterung auf HD und führt sich danach wieder selber aus, ist evtl. ein Anzsatz, Schwierig erscheint aber die Übernahme der aktuellen Werte der Variablen (Programmzustand vor dem speichern)

    Einen schönen Abend wünscht
    Lutz

    P.S.: Ich meine gaaaaaanzzzz früher hat man z.B. beim C64 BASIC mit peek eine BASIC tocken (= befehl in byteform) im RAM verändern (während der Laufzeit) und schwupss war das Progi modifiziert.

    Zitat von Andy

    Hallo Lutz,

    ...willkommen im Club ;)

    Eigentlich ist ja eine Interpretersprache prädestiniert für dein Vorhaben, solange "Klartext" im Speicher steht.
    "Früher" haben wir an den Stellen im Code, die später modifiziert bzw. erweitert werden sollten, einfach NOP´s hingesetzt, dort konnte dann das Programm hinschreiben was es wollte, ausführbare *.COM-Dateien waren da eine Offenbarung.
    Eigentlich müsste man sich mal anschauen, in welchem "Format" AutoIt in den Speicher schreibt. Beim Compilieren wird der Code jedenfalls verschlüsselt, aber im Speicher? Habe jetzt auf Anhieb keine Ahnung wie der Quellcode im Speicher "aussieht", man müsste mal schauen^^, oder jemanden Fragen, der davon Ahnung hat....
    ciao
    Andy

    Btw, was ist eigentlich dein konkretes Problem?

  • Q: Selbstmodifizierendes Programm möglich?

    • uuchip
    • 9. Juli 2009 um 20:20

    Hallo Andy,

    vielen Dank für die Antwort, ich denke wir kommen der Sache schon näher :-).

    Was ich nicht kann und will ist konkret maschinennah mit den Bits&Bytes herumbasteln. Als etwas älter Mensch hab ich das mal früher mit einem Appel ][ mit dem 6502 bzw. Z80 gemacht, wer sich damals eine 68000 Plattform leisten konnte war wirklich "the king".

    Nein mit einer Interpretersprache müsste man das einfacher hinbekommen, der EXECUTE Befehl geht ja in diese Richtung z.B. hab vor einiger Zeit hier mal dieses Schnippsel reingestellt:
    Gleichungslöser für AutoIt3

    Was mir fehlt ist sowas wie ein EXECUTE Befehl der mehrer variable Textzeilen als AU3 Code interpretiert. In der Programmiersprache REXX (eigentlich sowas wie ein Vorgänger von AU3) gibts einen INTERPRET Befehl, Erklärung:
    http://www.kilowattsoftware.com/tutorial/rexx/Interpret.htm
    wobei das einfache Beispiel aber auch in AU3 gecodet werden könnte, aber der EXECUTE "frist" leider keine Eingaben über mehrer Zeilen geschweige den Kontrollstrukturen.
    Fazit: Es wäre schön wenn es sowas wie ein INTERPRET in AU3 gäbe.

    Einen schönen Abend wünscht
    Lutz

    Zitat von Andy

    Hi,
    selbstmodifizierende Code ist schon seit einigen Jahren (Jahrzehnten) "out".
    Funzt natürlich nur mit Maschinensprache (Assembler ftw) und insbesondere muss man höllisch auf Sachen aufpassen, von denen 99% aller "Hochsprachenfreaks" keine Ahnung haben (müssen), weil der Compiler das alles erledigt, Speichermanagement, Segmente, Offsets, Real- Protectedmode, uswusf. Als 8088/8086-Programmierer hat man da nur neidisch auf die Motorolajungs (68000er) mit ihrem linearen Adressraum geschielt...

    Aber auch mit AutoIt ist es möglich, während der Laufzeit den Speicher zu verändern, guck mal nach der memory-udf. Problematisch wird das ganze, wenn bei neuen Prozessoren der Programmcode vom Speicher direkt in den Cache gelesenund von dort abgearbeitet wird...viel Spass beim abfragen der Cachelines....

    Das VB-Beispiel-Script verändert übrigens in keinster Weise den Code zur Laufzeit, sondern den Sourccode.
    Wenn du so etwas machen willst, kein Problem!

    ciao
    Andy

  • Q: Selbstmodifizierendes Programm möglich?

    • uuchip
    • 9. Juli 2009 um 14:00
    Zitat von FunH@cker

    Hä willst du ein Skript haben das dir deine z.b Mausbewegung , Tastentruck etc. aufzeichnet und das dan als code zurück gibt oder wie jetz ^^

    Hilalie

    nein, dass ist damit nicht gemeint. Allgemeine Info unter:
    http://de.wikipedia.org/wiki/Selbstmodifizierender_Code

    bzw. ein Beispiel in VB:
    http://www.freevbcode.com/ShowCode.asp?ID=4892

    Eine Anwendung könnte z.B. sein, dass der user während der Laufzeit(!) eine Funktion eingibt, und das Progi dann einen Funktionswert zurückgibt (mathe parser) oder nummerisch das Intergral berechnet usw.

    Gruss
    Lutz

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™