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. Andy

Beiträge von Andy

  • Mutex frage

    • Andy
    • 18. August 2012 um 18:08
    Zitat

    Ich sehe nicht so wirklich den Vorteil darin, Mutexe in AutoIt zu verwenden.

    so kanns gehn....
    ICH sehe nicht so wirklich den Vorteil darin ÜBERHAUPT Mutexe zu verwenden 8o

    Mal ganz im Ernst, ich verteile Aufgaben auf sämtliche Cores der Prozessoren bzw. Grafikkarten ohne mir überhaupt Gedanken über Mutexe zu machen, da das Threadmanagement in OpenCL implementiert ist. Starte Programm auf allen verwendbaren Cores, und benutze barrier(), um sicherzustellen, dass ALLE anderen Threads bis zu dieser Stelle abgearbeitet wurden. Erschlägt 99% der Anwendungen....

    Speicher/Dateien/Datenbanken LESEN ist Dank Lock() kein Thema, beim Schreiben genauso....
    Gleichzeitig (sic) Lesen und Schreiben ist imho sowieso eine Lachnummer, bisher sieht das in 99% aller Fälle programmtechnisch so aus, dass die kritischen Threads sicherheitshalber alle angehalten werden. Ob man bei z.B. 16 Threads mit unterschiedlichen Prioritäten noch übersichtlich Mutexen kann, wage ich ehrlich gesagt zu bezweifeln....Man merkt deutlich, dass die programmtechnische Umsetzung aus einer Ära kommt, als 2-Prozessormaschinen State of the Art waren. EIN blockender Thread oder Deadlock schmeisst doch das gesamte System um!

    Der Aufwand wäre mir ehrlich gesagt zu hoch, da würde ich mich primär um andere Optimierungsmaßnahmen kümmern ;)

  • Kennt jemand einen !wirklich! Free Dynamic DNS Dienst?

    • Andy
    • 18. August 2012 um 15:21

    Hi,
    DynDNS benutze ich auch seit Jahren...problemlos, und händisch eingeloggt hab ich mich (im Gegensatz zu Bplaced) dort imho auch noch nicht.
    Bei Bplaced kommt alle halbe Jahre mal ne E-mail wg "Aktivierung", die wird per Script abgefangen und einmal in den Account eingeloggt. "Händisch" geht da garnix mehr :thumbup:
    Diese Aktivierung ist sicher auch bei DynDNS zu automatisieren.....

  • OpenCV meets AutoIt

    • Andy
    • 13. August 2012 um 00:05

    Hi,
    hast du selbst compiliert?

    Dann kommentiere mal die CV_Assert aus, bzw. was macht diese Funktion?

    Hab mal cvLine() ausprobiert, derselbe Fehler!

    Spoiler anzeigen
    [autoit]

    #include "OpenCV.au3"

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

    #include "array.au3"

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

    Global $iImage, $iWidth

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

    HotKeySet("{ESC}", "_Exit")

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

    $a = _OpenCV_Startup()
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $a = ' & $a & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    ;Exit
    $iImage = _OpenCV_LoadImage("Test.jpg") ;, $CV_LOAD_IMAGE_GRAYSCALE)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $iImage = ' & $iImage & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

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

    $struct = "int nSize;" & _
    "int ID;" & _
    "int nChannels;" & _
    "int alphaChannel;" & _
    "int depth;" & _
    "char colorModel[4];" & _
    "char channelSeq[4];" & _
    "int dataOrder;" & _
    "int origin;" & _
    "int align;" & _
    "int width;" & _
    "int height;" & _
    "ptr _IplROI ;" & _
    "ptr _IplImage ;" & _
    "ptr imageId;" & _
    "ptr _IplTileInfo ;" & _
    "int imageSize;" & _
    "ptr imageData;" & _
    "int widthStep;" & _
    "int BorderMode[4];" & _
    "int BorderConst[4];" & _
    "ptr imageDataOrigin"

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

    $iplimage = DllStructCreate($struct, $iImage)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $iplimage = ' & $iplimage & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

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

    $width = DllStructGetData($iplimage, "width")
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $width = ' & $width & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

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

    ;exit

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

    ; $b=_OpenCV_Circle($iImage, 50, 100, 20)
    ;~ ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $b= = ' & $b & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    ;~ If @error Then MsgBox(0, "_OpenCV_Circle", @error & "-" & @extended)

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

    $_ix1=10
    $_iY1=10

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

    $_iX2=50
    $_iY2=50
    Local $_tCenter1 = DllStructCreate($tagCvPoint)
    DllStructSetData($_tCenter1, "x", $_iX1)
    DllStructSetData($_tCenter1, "y", $_iY1)
    Local $_tCenter2 = DllStructCreate($tagCvPoint)
    DllStructSetData($_tCenter2, "x", $_iX2)
    DllStructSetData($_tCenter2, "y", $_iY2)

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

    Local $_tColor = DllStructCreate($tagCvScalar)

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

    DllStructSetData($_tColor, "val", 150.0, 1)
    DllStructSetData($_tColor, "val", 150.0, 2)
    DllStructSetData($_tColor, "val", 150.0, 3)
    DllStructSetData($_tColor, "val", 0.0, 4)

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

    Local $_aResult = DllCall($__ghOCVDll_1, "int:cdecl", "cvLine", "int", $iImage, "ptr", DllStructGetPtr($_tCenter1), "ptr", DllStructGetPtr($_tCenter2), _
    "ptr", DllStructGetPtr($_tColor), "int", 1, "int", 8, "int", 0)

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

    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $_aResult = ' & $_aResult & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

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

    _ArrayDisplay($_aResult)

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

    $d = _OpenCV_NamedWindow("Test")
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $d = ' & $d & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
    $e = _OpenCV_ShowImage("Test", $iImage)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $e= = ' & $e & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

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

    Sleep(2000)
    _Exit()

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

    Func _Exit()
    _OpenCV_SaveImage(@DesktopDir & "\test1234.jpg", $iImage)
    _OpenCV_ReleaseImage($iImage)
    _OpenCV_Shutdown()
    MsgBox(0, "", "Fertig")
    Exit
    EndFunc ;==>_Exit

    [/autoit] [autoit][/autoit] [autoit][/autoit]
    Code
    OpenCV Error: Assertion failed (0 <= shift && shift <= XY_SHIFT) in unknown function, file ..\..\..\src\opencv\modules\core\src\drawing.cpp, line 1574


    Da wird irgendeine unbekannte Funktion in CV_Assert() aufgerufen...

  • TCP/IP funktioniert nicht im Netzwerk

    • Andy
    • 12. August 2012 um 21:53

    Anleitung befolgt?

  • OpenCV meets AutoIt

    • Andy
    • 12. August 2012 um 09:13

    Hi,
    die Fehlermeldung kommt sicherlich nicht von AutoIt!
    Also entweder das komplette Script posten, so dass man es auch ausprobieren kann, oder selber weitertüfteln...was steht denn in der line 1628 aus der Fehlermeldung?

    Weiterhin ist der Typ von $tagCvScalar double, allerdings übergibst du mit 150 einen INT, um double zu verwenden, nimm 150.0

  • Summertime = Funtime! Sudoku-Solver in 62 Bytes

    • Andy
    • 12. August 2012 um 00:08
    Zitat

    "WTF?! Diese paar Zeilen können ein Sudoku lösen??"...
    Ich werde mal versuchen, das in AutoIt umzusetzen. Da ich es nicht schaffe das Skript überhaupt zu verstehen, gebe ich auf

    hat auch bei mir lange gedauert und einige Seiten Papier gekostet^^, jedenfalls krass die Idee dahinter....

    Zitat

    Da juckts direkt in den Fingern selbst irgendwas möglichst kleines zu schreiben

    in BASIC gabs früher mal "Einzeiler"-Contests, aber AutoIt ist da weiiiiitttt hintendran^^
    Irgendwo hab ich ne 12 byte grafikdemo....ohne sound^^

  • Struct in Struct

    • Andy
    • 10. August 2012 um 17:40

    Hi,
    das kannte ich schon :thumbup:
    Allerdings bekam ich beim Testen der _DllStructDisplay() von Ascend4nt Fehlermeldungen, bzw. Errors, denen ich nicht unbedingt nachgehen wollte ;)
    Aber "altmodisch" gehts ja auch :P

    Btw. was ist (ausser alignment) eigentlich der tiefere Sinn der STRUCT/ENDSTRUCT -Konstruktion, wenn man diese nicht nutzen kann, um z.B. wie oben angesprochen, über den Namen auf eingebettete Strukturen zuzugreifen?

  • Grafische Spielerei

    • Andy
    • 10. August 2012 um 17:27

    Hi,
    sehr fein :thumbup:

    Beim ersten Start hatte ich einen wirklich tollen "Spiralnebel", der sich leider bisher nicht wiederholt hat, ich werde einfach mal das Script nach "guten" Seeds suchen lassen und diese dann rotieren lassen ;)

  • Overclocking Fun

    • Andy
    • 10. August 2012 um 17:16

    Hi,
    hab neulich einen niegelnagelneuen 17"- Llano-Quadcore-Laptop (mattes Display) mit zusätzlichem Grafikchip (zusätzlich zum integrierten) von Samsung für nen Appel und ein Ei (420€) geschossen. Der Grund des Verkäufers für den niedrigen Preis (Fachgeschäft): " Das Display ist matt, unsere Klientel steht auf glänzende Displays!". :rolleyes:

    Der Rechner ist dank K10stat nicht nur zu übertakten (braucht kein Mensch), sondern auch sehr einfach zu UNTERTAKTEN!
    Auf maximal 400 Mhz statt 2,7Ghz auf allen Cores verlängert sich die Akkulaufzeit von 4,5h bei normalem Gebrauch auf immerhin 6h, bei abgeschaltetem Wlan nochmal um 20min länger.
    Die AutoItscripte stört das idR nicht sonderlich, sie laufen mit ca. 30% der Geschwindigkeit, was wieder einmal die schon von mir an anderer Stelle geäußerte These stützt, dass der Prozessor beim Ausführen von AutoIt-Scripten sowieso öfter mal in Tiefschlaf verfällt^^

    Mit dem runtergetakteten Rechner kann man auch bei längeren Autofahrten seine Frau fahren lassen und selber bissl in AutoIt hacken, selbst Video gucken geht (bei 80% Auslastung) :D

  • Summertime = Funtime! Sudoku-Solver in 62 Bytes

    • Andy
    • 10. August 2012 um 16:53

    Hi zusammen,

    mal etwas für alle, denen es bissl langweilig ist, mit Hightechspielzeug abzuhängen und die mal bissl an der "guten alten Zeit" schnuppern wollen 8o

    Im ASM-Thread hatte ich diesen Sudoku-Solver schon mal angekündigt, hier nun die ausführbare Version .

    Die Datei kommt natürlich von einer Competition :rock:

    Zitat

    Hugi Size Coding Competition #25 - The "Sudoku" Compo
    1st -- G3, Russia, 67 bytes, 30 Jan 2006
    1st -- Digimind, Russia, 67 bytes, 31 Jan 2006

    Wer ein 64 Bit-System nutzt und die *.COM-Files nicht direkt starten kann, der könnte z.B. DosBox runterladen und installieren, läuft bei mir unter WIN7-64 einwandfrei.

    Dazu in WIN7 ein Verzeichnis C:\DosBox erstellen und die angehängte zip-Datei hier rein entpacken

    Dosbox starten und mit
    mount c c:\dosbox
    c:\
    das Verzeichnis mounten (kann man auch in der " DosBox 0.74 Options" -Datei eintragen, dann startet Dosbox immer mit diesem Verzeichnis)

    Dann nur noch
    test.bat
    eingeben, und es wird erst das Puzzle und dann das gelöste Sudoku ausgegeben....

    WinXP-32 User können natürlich die Dateien in der CMD ohne Emulator laufen lassen!


    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.


    /EDIT/ Bemerkenswert is imho, dass die Dateigröße des Solvers kleiner ist als das Puzzle.
    Weiterhin ist die komplette Datei-Ein- bzw. Ausgabe in diesen 62 Bytes enthalten.
    Von der Mathematik garnicht erst zu reden....es hat mich Stunden gekostet rauszufinden, wie der Code funktioniert, ggf. könnte man das mal nach AutoIt konvertieren.
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Dateien

    sudokusolver62byte.zip 2,85 kB – 396 Downloads Dosbox.jpg 28,52 kB – 0 Downloads
  • Struct in Struct

    • Andy
    • 10. August 2012 um 12:10

    Hi,

    um sowohl die eingebetteten als auch die gesamte Struct benutzen zu können, würde ich es so machen:

    Spoiler anzeigen
    [autoit]

    $CvBox2D=dllstructcreate("STRUCT Center;float x;float y;ENDSTRUCT Center;STRUCT size;float width;float height;ENDSTRUCT size;float angle;")

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

    $CvPoint2D32f=dllstructcreate("float x;float y",DllStructGetPtr($CvBox2D))
    $CvSize2D32f=dllstructcreate("float width;float height",DllStructGetPtr($CvBox2D,"width"))

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

    dllstructsetdata($CvBox2D,"y",1.234); Box-Struct beschreiben

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

    $y=dllstructgetdata($CvPoint2D32f,"y"); Point Struct lesen
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $y = ' & $y & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

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

    dllstructsetdata($CvSize2D32f,"width",1234);Size-Struct beschreiben

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

    $width=dllstructgetdata($CvBox2D,"width");Box-Struct lesen
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $width = ' & $width & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

    [/autoit]

    viel schöner wäre es natürlich, wenn man direkt auf z.B. die Center-Struct zugreifen könnte

    [autoit]

    dllstructsetdata($CvBox2D,"Center",1.234,2); y in der Box-Struct beschreiben

    [/autoit]
  • Nach erstem programm start variable festlegen

    • Andy
    • 9. August 2012 um 09:03
    Zitat

    Aaah, das wusste ich ja auch noch garnicht. Wie geht das denn?

    Datei öffnen, Daten schreiben, Datei schliessen....wie sonst? :D
    Guck dir mal mit einem Hexeditor die ersten 2-3Kb einer Exe-Datei an, da siehst du dann die "leeren" Bereiche.

  • Nach erstem programm start variable festlegen

    • Andy
    • 9. August 2012 um 06:59

    Hi,
    du kannst auch Daten direkt in der EXE-Datei ändern (patchen).
    Die erste Sektion des PE-Headers ist immer auf 512 Byte Größe aufgepumpt, egal wie viele Segmente die EXE verwendet. In diesen "leeren" Speicherbereich kann man beliebige Daten oder Code einfügen bzw ändern.

  • Ressourcen Komprimieren

    • Andy
    • 8. August 2012 um 20:21

    Hi,
    hab den Code nur überflogen, die Funktion ASC216 kannst du durch ein (sauschnelles) stringinstr() ersetzen und $a=_ToArray($_a) ist die langsame Version von $a=StringSplit($_a,"")

    Ansonsten klasse :D

    /EDIT/Aber da gibts ein kleines Problem^^
    Je nach Zeichencodetabelle und verwendeter Codepage werden die Zeichen

    Code
    Base 216: "^WÖHPX2;o”O”íÊþÍ7+Mn15!’qnöÊTi

    mit anderen Ascii-Codes ausgewertet!
    Das könntest du umgehen, indem du sowohl beim kodieren als auch beim dekodieren dieselbe Codepage verwendest....

  • GDI+ Bildschirmschoner mit Rechtecken

    • Andy
    • 8. August 2012 um 20:00

    Hi,

    Zitat

    Das Beste am Skript ist ein Doppelpuffer, der aber garnicht nötig ist in dem Fall

    made my day :thumbup:

    Zitat

    Den kann man sich aber abschauen, falls man flackerfreie GDI+ Anwendungen haben will
    (Ein Doppelpuffer ermöglicht es z.B. beim WM_PAINT ein aktuelles Bild anzuzeigen, obwohl gerade parallel Objekte gezeichnet werden. Und das ohne Mehrbelastung für das Skript. Das einzige was man braucht sind ein Paar KB Ram für die Bitmap.)

    die Idee ist nicht neu^^
    "Damals", in der 8-bit-Ära, hat man den ersten Puffer ins Ram der Grafikkarte geschrieben und während der Anzeige den 2. Puffer vollgeschrieben. Die beiden Puffer waren natürlich im RAM und man konnte einfach die Anfangsadresse in die "Grafikkarte" (CGA, EGA und wer richtig Kohle hatte, sogar HERCULES) mappen.....hach war des scheeee :rock:

    Nichtsdesto trotz wird auch heutzutage ein Schuh draus, es werden x Prozessoren und y Threads verwendet, wer das letzte bisschen Performance herauskitzeln muss, der verwendet je Thread einen Buffer 8o

  • Aufzeichnen -> TCP -> Abspielen (BassUDF)

    • Andy
    • 8. August 2012 um 17:49

    schau mal bei TCPListen() auf den 3. Parameter....
    /EDIT/ sry, MaxPendingConnection gibt nicht den Puffer sondern die Anzahl der maximal möglichen Verbindungen an

    Der Puffer ist uninteressant, die Paketgröße bei TCP ist idR. 1460 (1452) Bytes. Allerdings ist auch das völlig egal, da sowohl 1 Byte Nutzdaten als auch 1MB Nutzdaten versendet werden. Das unterschiedlich schnelle Füllen und Leeren der Eingangs- bzw. Empfangsbuffer übernimmt das Protokoll, AutoIt hat da keine Einflussnahme.

    Sorge dafür, dass der TCPSend() Befehl möglichst große Brocken erhält, in kleinere Pakete aufteilen wird er das von selbst.
    Allerdings steigt dann natürlich auch die Latenz, also ist es die Aufgabe des Programmierers, anhand der vorhandenen Übertragungsgeschwindigkeit die optimale Größe der gesendeten "Brocken" zu bestimmen. Solange mehr Daten gesendet als vom Empfänger verarbeitet werden können, wird der "stream" ohne Unterbrechungen laufen (von der Latenz abgesehen).

  • Bot zum ändern der Ton Einstellungen

    • Andy
    • 8. August 2012 um 16:20
    Zitat

    Stimmt beim Fußball sollte es auch keine Tore geben, beim Basketball kein Korb.
    Das ist wenn ich ehrlich sein soll so naives und zum Teil (nicht immer zutreffend) Politiker denken,
    alles schön und gut Frieden überall, jeder ist lieb, es gibt keine Verbrecher, kein krieg *naiv*
    es ist halt so das der stärkere gewinnt, man kann sagen was man will, aber wenn du zb css spielst, schießt du ja auch leute ab um besser zu sein und gibts gas um noch besser zu sein, im forum gehts zwar ums helfen, aber wenn der ansporn da ist das man durch diese hilfe noch etwas zurück bekommt, ist das sicher angenehmer als wenn der Thread einfach geschlossen wird

    Würdest du, statt CSS zu spielen, wie die meisten der "Supporter" hier im Forum schon seit mehreren Jahrzehnten neben ihrer täglichen Arbeit forenaktiv kostenlos helfen, dann wüßtest du den Unterschied!
    "Ansporn" braucht hier ehrlich gesagt kein Mensch!
    Gerade im Gegenteil, wer hier das Knowhow hat, ist hinreichend bekannt...oder glaubst du im Ernst, daß die QUALITÄT der Antworten abhängig ist von irgendwelchen Sternchen oder Pluszeichen in der Nähe eines Avatars?
    In einem großen Forum kenne ich seit über 10 Jahren Mitglieder, die sind auch nach +8000 Posts genauso unfähig wie am ersten Tag...alle halbe Jahre logge ich mich mal dort ein, nur um bestätigt zu bekommen, dass "Hilfe" aus mehr besteht wie aus krampfhaftem profilneurotischen hinterhergerenne von "ich-hab-schon-xxx-Leuten-geholfen"-Tags in der Signatur....

    Btw., von den hier immer mal auftauchenden "Ich-will-Sternchen"-Befürwortern ist nach einigen Tagen niemand mehr aktiv.....komisch, oder?

  • GDI+ Spielerei: Rolle aus Rechtecken

    • Andy
    • 5. August 2012 um 09:13

    Hi,

    Zitat

    Egal wie "klein" dein Beispiel Skript ist, sollte aber in Skripte liegen.

    So klein kann ein Script garnicht sein, dass nicht ein anderer noch etwas daraus lernen könnte....daher ab damit ins SCRIPTE

    Zitat

    Ich hatte ein bissl Zeit und habe mal das JavaScript portiert:

    coole Sache, wie immer :thumbup:

  • Seltsames Verhalten von Hex und Int

    • Andy
    • 5. August 2012 um 08:41

    Zu diesem Thema gab es mal einen längeren Thread, man beachte insbesondere auch Post #13 :rofl:

  • Seltsames Verhalten von Hex und Int

    • Andy
    • 4. August 2012 um 07:24

    Hi,

    Zitat

    Diese Zahlen haben eine Verbindung.
    48 61 6C 6C 6F
    6F 6C 6C 61 48
    Die erste ist die 2te Rückwärts in 2er Schritten

    sieht mir sehr nach einem Speicherfeature aus^^
    Du beachtest aber Little/Big Endian nicht....

    Die "Zahl" (als INT) in den Speicher wird natürlich in Little Endian geschrieben, steht also im Speicher "rückwärts" drin.
    Der "String" liest byteweise aus, holt sich diese Bytes also "rückwärts" und kommt damit zum "falschen" Ergebnis (als String gesehen)
    Wird jetzt aber dieser String wieder in die Zahl umgewandelt, dann greift Little Endian und die Zahl ist wieder richtig.

    Mach das alles mal mit einer DllStruct() , also verschiedene Typen im gleichen Speicherbereich, und schau dir da die Ergebnisse an....

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    $struct_string=dllstructcreate("char[8]");64 Bit
    dllstructsetdata($struct_string,1,"Hallo");nacheinander in den Speicher schreiben, also gewissermassen Big Endian

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

    for $i=0 to 4;einzelne Buchstaben aus dem Speicher holen
    $struct_byte=dllstructcreate("byte",DllStructGetPtr($struct_string)+$i);holt sich die Bytes nacheinander aus dem Speicher
    $byte=DllStructGetData($struct_byte,1)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $byte = ' & $byte &" "& chr($byte)&" "&hex($byte,2)& @crlf) ;### Debug Console
    next

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

    $struct_int=DllStructCreate("int64",DllStructGetPtr($struct_string));den INT aus dem Speicher holen little endian
    $int64=dllstructgetdata($struct_int,1);little endian
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $int64 = ' & $int64 & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

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

    $hex=hex($int64);diesen INT als hex
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $hex = ' & $hex & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

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

    ;umgekehrt genauso...
    $struct_int=DllStructCreate("int64")
    dllstructsetdata($struct_int,1,0xAABBCCDD);little endian
    $struct_string=dllstructcreate("char[8]",DllStructGetPtr($struct_int));64 Bit
    for $i=0 to 7 ;alle bytes auslesen
    $struct_byte=dllstructcreate("byte",DllStructGetPtr($struct_string)+$i);holt sich die Bytes nacheinander aus dem Speicher
    $byte=DllStructGetData($struct_byte,1)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $byte = ' & " "& $i&" "&hex($byte,2)& @crlf) ;### Debug Console

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

    next

    [/autoit]

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™