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

  • Binärdatei schreiben

    • Andy
    • 24. Juni 2013 um 13:23

    Hi,
    schreibe die Datei so wie der String kommt (also 0xABC2345F....) per
    filewrite (Dateiname, binarytostring($string))
    vorher noch ein filedelete($dateiname) und es sollte passen

    In deinem Script schreibst du nämlich im Binärmodus EINZELNE BYTES in deine Datei, daher stehen dort auch 0xFFABC2123FF07...drin.
    Wenn du die Datei in einem Viewer oder in Scite anschaust, sollte dort so etwas stehen "WVSU1‰ÆA‰ÈgA‹HA‰ÏgE‹HgE)

  • Tcp größere Datenmenge senden

    • Andy
    • 23. Juni 2013 um 17:14

    das sleep

    [autoit]

    $Recv = TCPRecv($Connection, 1000000)
    sleep(1000)

    [/autoit]

    macht HINTER dem TCPRecv definitiv keinen Sinn, denn dann sind die Daten im Puffer ja schon gelesen...

    Und wer die Hilfe liest, der bemerkt, dass bei dem Parameter Maxlen steht: "Maximale Anzahl der zu erhaltenen Zeichen."
    Dort steht nirgendwo, dass darauf egwartet wird, bis zig-tausend Bytes übertragen wurden.
    Ganz im Gegenteil, der Puffer wird bis zu einem bestimmten Bereich mit Paketen gefüllt, und dann wartet TCP darauf, dass der Puffer geleert wird!
    Solange der Puffer nicht geleert wird, passiert....NICHTS! Keine weitere Übertragung!

    Daher macht man den Puffer KLEIN (1-2 Kilobytes) und holt die Daten daraus schnellstmöglich ab, damit TCP neue anfordern kann.

    [autoit]

    While Sleep(10) ;wartet drauf bis etwas gesendet wird.
    $recv = TCPRecv($Connection, 1024*1024); 1 MB
    ;~ If @error Then ExitLoop
    If $recv <> "" Then ExitLoop
    WEnd

    [/autoit]

    bringt aus genau diesem Grund NICHTS, da nur 1x Daten aus dem Puffer gelesen werden

    So sollte es sein:

    [autoit]

    $recv=""
    While Sleep(10) ;wartet drauf bis etwas gesendet wird.
    $rec= TCPRecv($Connection, 1024); $recv mit 1 KB-Paketen füllen...

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

    ;~ If @error Then ExitLoop
    If $rec = "" Then ExitLoop ;....bis keine mehr kommen

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

    $recv&=$rec ;alle Pakete aneinanderhängen
    WEnd

    [/autoit]


    Ich würde sowieso zuerst die Dateigröße und den Dateinamen schicken, dann weiss man wenigstens, ob alle Daten angekommen sind und wie die Datei heisst!

  • Tcp größere Datenmenge senden

    • Andy
    • 23. Juni 2013 um 13:49
    [autoit]

    $Recv = TCPRecv($Connection, 1000000)
    sleep(1000)

    [/autoit]

    wo hast du denn DAS her (das mit dem Sleep meine ich! )
    Überleg dir mal, was das Script in diesen beiden Zeilen macht, und du hast sofort die Lösung...

    btw sieht man deutlich, dass du weder eins der TCP-Beispiele in der Hilfe beachtet hast, noch irgendein funktionierendes TCP-Script!

  • GGEngine + UDF [UPDATE 15.2.13]

    • Andy
    • 23. Juni 2013 um 07:16

    Hi,
    aus aktuellem Anlass grabe ich den Thread wieder aus.

    @TheShadowAE, schau mal, ob du nicht eine 64-Bit-Version der DLL bzw der Engine erstellen kannst. Ich habe VC++ nur in der 32-Bitversion.
    Wenn das Stress bedeutet, lass es bitte!

    Bin gerade am Basteln, mit 64Bit-ASM-Code bzw AVX Grafiken zu bearbeiten. AssembleIt() soll auf eine höhere Stufe gehoben werden 8o

  • Binärdatei schreiben

    • Andy
    • 21. Juni 2013 um 19:26

    Orion,

    Zitat

    Totaler Crash, DEADBEEF


    wer auf alles klickt, was nach einer ausführbaren Datei aussieht, dem gehört es nicht besser...
    Lasse diese Programme in einer DosBox oder auf einem 32-Bit BS (WindowsXP in einer VM ist immer gut^^) laufen^^

  • Binärdatei schreiben

    • Andy
    • 21. Juni 2013 um 18:27

    Hi,

    Zitat

    Allerdings wenn ich den zusammenhängenden "Binär"-String so direkt speichere, speichert Filewrite trotz Fileopen(...., 16+2) die Daten als Text.
    Dabei ist es unerheblich, ob ich StringtoBinary, Binary noch sonst was nutze.

    Script?
    Das von dir beschriebene Vorgehen wende ich in div. Scripten mehrmals täglich an, ohne Probleme...
    String lesen (was auch sonst...) und diese Bytes in eine Datei schreiben...ohne Parametergedöns als Einzeiler.

    [autoit]

    filewrite("demo.com",binarytostring("0xB81300CD106800A00711C8AAE2FB40EBF8"))

    [/autoit]

    Erstellt eine ausführbare Datei, und ob in binarytostring() die Rückgabe einer Datenbankabfrage steht ist egal, habe ich ausprobiert.

    Zitat

    Wenn ich mir einen Teilstring von dem übergebenen (aus der DB) hernehme und NUR diesen einzeiligen (weniger als ~4000 Zeichen) genau auf die gleiche Art speichere, dann schreibt er dies Binär, sprich ich habe ein Teil der Originaldatei erstellt (siehe 2.ter Spoiler in Post #1) - nur den Gesamtstring schreibt er nicht so, wie er soll.


    Lass dir mal die Stringlänge des "Orginals" ausgeben

    [autoit]

    stringlen(stringtobinary(fileread("test.pdf")))

    [/autoit]

    und vergleiche das mit der Stringlänge deines Rückgabestrings aus der Datenbank.

    Zitat

    Den "richtigen" String bekomme ich als ganzes aus der Datenbank geliefert. das nimmt er nicht, weil zu gross.
    Da kommt dann die Fehlermeldung:

    F:\....au3 (1) : ==> Unterminated string.:

    Da ist was faul...Wenn der String in eine Variable passt, wird auch in eine Datei geschrieben...wieviele Gigabyte hat die Datei?

  • Frage zu Regex

    • Andy
    • 16. Juni 2013 um 22:20

    Ich würde den String trennen an der Postleitzahl, das sind 5 Ziffern und das ist das einzig sichere in deinem String.
    Und dann weiter aufdröseln...so bspw:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

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

    ;$Adressen=fileread("Adressen.txt")
    $Adressen = " Martin Mustermann SeeYoustr. 4 12323 Wurstwo Egalheim " & @CRLF & _
    "Ulf Müller Lüdenscheid Im Talgrund 11b 23456 Bad Münster am Stein" & @CRLF & _
    "Dr.Dr. Hannes Klöbner Badewannenstrasse12 45678 Entenhausen im Breisgau" & @CRLF & _
    "Fritz Freiherr von Hohenlohe Fürstenstr.55 99999 Adelshausen an der Weinstrasse" & @CRLF & _
    "Marlene Jaschke Vogelsangstraße 112a-114b 01234 Piepenhausen"

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

    $adresszeilen = StringSplit($Adressen, @CRLF, 3)

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

    For $zeile In $adresszeilen

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

    $zeile = StringStripWS($zeile, 7) ;führende, folgende und doppelte Leerzeichen entfernen
    $a = StringRegExp($zeile, "(.*)(\d{5})(.*)", 3) ;splitten an PLZ

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

    ; _ArrayDisplay($a)

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

    $NameStrasse = $a[0]
    $plz = $a[1]
    $Ort = $a[2]

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

    ;Orte splitten
    $orte = StringSplit(StringStripWS($Ort,7), " ", 3)
    ; _ArrayDisplay($orte)
    $teilort = ""

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

    Switch UBound($orte) ;Anzahl Wörter im Ort
    Case 1
    $Ort = $orte[0]
    Case 2
    $Ort = $orte[0]
    $teilort = $orte[1]
    Case 3 - 10
    $Ort = ""
    For $i = 1 To UBound($orte)
    $Ort &= $orte[$i]
    Next
    EndSwitch

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

    ;Namen und Strasse splitten
    $NameStrasse_split = StringRegExp($NameStrasse, "(.*?)(\d{1}.*)", 3) ;alles ab der ersten Ziffer^^
    $Hausnummer = $NameStrasse_split[1]
    $Name_Strasse = $NameStrasse_split[0]
    ;nur selbst fressen macht fett!
    ;viel spass dabei^^....

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

    $adressstring="Name und Strasse:"&@TAB&$Name_Strasse&@crlf& _
    "Hausnummer "&@TAB&$Hausnummer&@crlf& _
    "PLZ "&@TAB&$plz &@crlf& _
    "Ort "&@TAB&$Ort&@crlf& _
    "Teilort "&@TAB&$teilort

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

    Msgbox(0,"Adressen",$Adressstring)

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

    Next

    [/autoit]
  • Frage zu Regex

    • Andy
    • 16. Juni 2013 um 17:48

    Hi,

    Zitat von Observer

    bin nicht so der RegExperte

    muss man auch nicht sein, die "normalen" Stringbefehle reichen dafür aus.
    Diese haben nämlich den großen Vorteil, dass man die auch von dir beschriebenen "Ausnahmen"

    Zitat

    Zwischen Vor und Nachname ein 2t Name, evtl. auch kein Teilort oder aber der Nachname ist evtl. Müller-Mailer aber da unter Umständen getrennt oder eben auch nicht.
    Es könnte auch sein, das die Strasse so geschrieben wurde.
    SeeYou Str. 4

    recht einfach abfangen kann.
    Wenn das RegEx bei einer der Ausnahmen abschmiert oder unerwartete Ergebnisse liefert, dann schaust du nämlich in die Röhre. Oder willst du bei jeder "Ausnahme" hier einen der RegEx´er anhauen, dass er dir die Abfrage umschreibt oder erweitert?
    Btw. wie kommst du zu dem String

    Code
    Martin Mustermann SeeYoustr. 4 12323 Wurstwo Egalheim

    . Allein dafür gehört schon jemand geprügelt, und das meine ich nicht zum Spass! JEDES (und wenn es noch so alt ist) Adressdaten-Programm hat die Möglichkeit, entweder nach CSV oder einem anderen Stringformat mit Trennzeichen zu exportieren...
    Denn um bspw. das hier

    Code
    Vorname | Nachname | Strasse | Hausnr | PLZ | Ort | Teilort

    aufzudröseln, brauchts kein RegEx, sondern nur ein simples

    [autoit]

    StringSplit()

    [/autoit]
  • Autoit SysInfo Clock v0.9.9.7 build 2014-08-28 beta

    • Andy
    • 15. Juni 2013 um 09:18

    völlig egal unter welchem BS,

    [autoit]

    _WinAPI_CombineRgn

    [/autoit]

    funktioniert.
    Damit begrenzt du den sichtbaren Teil des Fensters und bist völlig unabhängig von bspw. Transparenz deiner Bilder oder Farbauflösung des Desktops/Grafikkarte usw

  • Autoit SysInfo Clock v0.9.9.7 build 2014-08-28 beta

    • Andy
    • 15. Juni 2013 um 09:06

    na klar^^ 8o, ist aber kein Beinbruch....ich weiss ja, von wem das Programm kommt^^

  • Autoit SysInfo Clock v0.9.9.7 build 2014-08-28 beta

    • Andy
    • 15. Juni 2013 um 08:53

    Hi,
    ich musste die performance counter in der Registry von Hand enabeln, dann hat es funktioniert.
    Aber das solltest du unbedingt abfangen, denn diese counter werden, je nach Einstellung, bei "Überlast" bzw. wenn genaue Timings gebraucht werden, weggeschaltet!


    /EDIT/ ABOUT bringt einen hässlichen schwarzen Kasten im Hintergrund.

  • Autoit SysInfo Clock v0.9.9.7 build 2014-08-28 beta

    • Andy
    • 15. Juni 2013 um 08:09

    Hi,
    ich bekomme einen Fehler, habe zusätzlich einige Consoleausgaben gesetzt...

    Code
    @@ Debug(669) : $sPCName = 
    >Error code: 0
    Performance Counters disabled, Registry Key: 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PerfProc\Performance'
    Performance Counters disabled, Registry Key: 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PerfProc\Performance'
    @@ Debug(675) : $aCPUCounters = 
    >Error code: 16
    @@ Debug(53) : $aCPUCounters = 
    >Error code: 0
    C:\Dokumente und Einstellungen\Lisa\Desktop\Autoitscripte\sysinfoclock\SysInfo Clock.au3 (403) : ==> Array variable subscript badly formatted.:
    $iCounterValue = _PDH_UpdateCounter($hPDHQuery, $aCPUCounters[$iTotalCPUs - 1][1], 0, True)
    $iCounterValue = _PDH_UpdateCounter($hPDHQuery, $aCPUCounters[^ ERROR
    Alles anzeigen

    /EDIT/
    keine Fehler im System-Monitor und in den Logs der Leistungsdatenprotokolle. Dort werden die aktuellen Daten richtig angezeigt.

    /EDIT2/ Performance-Counter in der Registry enabled, CPU wird +- ein paar Prozent gegenüber cpu-z angezeigt.

  • Autoit Programm verkaufen?

    • Andy
    • 14. Juni 2013 um 18:43

    Hi,

    Zitat

    Ich finde das toll, das du mal so den Aufwand beschreibst den es da tatsächlich auch braucht!

    ehrlich gesagt ist das Beschriebene weniger als 1% von dem, was man wirklich braucht...

  • Autoit Programm verkaufen?

    • Andy
    • 14. Juni 2013 um 17:40

    Hi,
    um gewerbsmäßig mit Software zu handeln brauchst du natürlich einen Gewerbeschein.
    Wenn du minderjährig bist, benötigst du dafür die Einverständniserklärung der Eltern und/oder die Zustimmung des Vormundschaftgerichts.
    Solltest du erwägen, das Gewerbe auf deine Eltern anzumelden, brauchen diese dafür die Einverständniserklärung des Arbeitgebers. Das Gewerbe darf die Arbeitsleistung nicht beeinflussen und sollte auch nicht im Wettbewerb mit dem Arbeitgeber stehen.

    Wenn du Ware (Software gehört dazu) verkaufst, musst du dafür die Gewährleistung übernehmen.
    Von der Mitgliedschaft (zwangsweise) und den Abgaben an die IHK und natürlich an das Finanzamt mal abgesehen, würde ich mich vorab mit einem fähigen Steuerberater und oder der IHK in Verbindung setzen, damit es nicht aus unerwarteter Richtung einen unvorhergesehenen Tiefschlag gibt.
    Wenn es diese oder ähnliche Software schon gibt, tust du gut daran, dich im Vorfeld zu informieren, welche Rechte oder Patente verletzt werden könnten.

    Und wenn ich lese

    Zitat

    Vergleichbare Programme kosten sonst ziemlich viel Geld und ich möchte es für ca. 3-5€ verkaufen

    dann ist die Gefahr schon sehr groß, dass du den Anbietern dieser "vergleichbaren Programme" auf die Füsse steigst, und das wird sich von denen niemand bieten lassen.
    Wenn dir die ersten Abmahnungsschreiben in den Briefkasten flattern, dann kannst du dich warm anziehen....

    Wie stellst du dir die Weiterentwicklung, Updates, ggf. Änderungen bei Betriebssystemwechsel uswusf. vor?
    Allein das Schreiben einer Rechnung kostet einige Euro, und ohne Rechnung wird dir niemand in einer Schule bzw. der Verwaltungsbehörde als Träger einer Schule etwas abkaufen. Wie soll das mit 3-5€ pro Version/Lizenz hinkommen?

    Zitat

    Es ist wirklich seehr aufwendig und wenn ich es nicht verkaufen darf, würde ich die Arbeit an diesem Programm wahrscheinlich einstellen.

    Ich kenne Leute, die haben viele Jahre und tausende Stunden mit der Weiterentwicklung ihrer Software verbracht und sind auf keinen grünen Zweig gekommen....


    Überleg dir mal, was du verdienst, wenn du jeden Samstag 2 Stunden Zeitungen austragen gehst, und von dem oben beschriebenen Zeugs nichts hören und sehen musst ;)
    Hier im Forum sind eine Menge Leute unterwegs, die Software für Firmen schreiben. Frag die mal, was passiert, wenn irgendetwas nicht funktioniert....

  • DllCall GUIDesign

    • Andy
    • 12. Juni 2013 um 22:19
    Zitat

    Wo kann ich die Constants nachschauen?

    wozu?
    schau mal links bei den Downloads nach "OrganizeIncludes"
    Damit werden die passenden include-files geladen, wenn eine dort enthaltene Konstante oder Funktion verwendet wird.

  • Unicode-Literals beim einlesen einer Datei konvertieren

    • Andy
    • 12. Juni 2013 um 19:36

    Mal auf die Schnelle

    [autoit]

    #include <File.au3>

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

    $text = FileRead("parsing_file.txt")
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $text = ' & $text & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

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

    Local $literals
    _FileReadToArray("utf8-literals.txt", $literals)

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

    For $i = 1 To UBound($literals) - 1 ;alle zeilen in der Datei
    $zeichen = StringLeft($literals[$i], 1) ;zeichen
    $code = StringTrimLeft($literals[$i], 5) ;Zeichen und ---- abschneiden
    $text = StringReplace($text, $code, $zeichen, 0, 1) ;ersetzen
    Next

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

    MsgBox(0, "utf8-literals", $text)

    [/autoit]
  • Tooltip Schriftfarbe

    • Andy
    • 12. Juni 2013 um 19:15

    Hi,

    Zitat

    Kann man die Schriftfarbe vom Tooltip ändern?

    wenn es gehen sollte, weiss ich es nicht wie.
    Ich würde aber nichtmal die Zeit für eine ausführliche Suche verschwenden wenn in viel kürzerer Zeit eine Funktion

    [autoit]

    _ToolTipEX()

    [/autoit]

    erstellt ist, die genau das von dir gewünschte macht.
    Dazu eine GUI erstellen mit den Styles des Tooltips und das Label einfärben.

    Denn du hast Recht in Bezug auf AutoIt:

    Zitat

    finde es aber (noch) recht Simpel.

    Es ist auch simpel, gerade um solche wie die von dir gewünschte Funktion zu erstellen.

  • n-body Simulation

    • Andy
    • 10. Juni 2013 um 19:23

    :thumbup:
    Made my day 8)

    [autoit]

    Global $GesamtMasse = 10^13 ; Gesamte Masse in unserem Universum in Kilogramm
    Global $AnzahlPartikel = 25 ; Anzahl Brocken auf die die Masse aufgeteilt wird
    Global $ZentralMasse = 10^10 ; Masse im Zentrum

    [/autoit]

    :rock:

  • n-body Simulation

    • Andy
    • 10. Juni 2013 um 18:35

    Interessant ist auf jeden Fall, wie sich nur wenige, d.h. 3-6 Körper, abhängig voneinander verhalten.

    Btw hätte ich nie gedacht, dass es sich jemand antut 400 Körper mit diesem langsamen Script aufeinander loszulassen. :D

    Zitat von name22

    Jetzt bekomme ich Lust das Ganze mit 10.000+ Partikeln auf meiner GraKa zu simulieren . Ich muss mich wirklich mal mit OpenCL auseinandersetzen, das könnte dabei ganz nützlich sein.

    na dann los^^
    Als Vorlage sollten die Beispiele im OpenCl-Tut ja ausreichen. Das Grundgerüst ist ja identisch, lediglich die Parameter und der Kernel müssen angepasst werden.
    Und wenn jemand schon den Kernel erstellt, dann ist es ein Leichtes, den C/C++-Code in eine Dll zu überführen, so könnte man auch div. Compiler und Compilerschalter vergleichen!

    Und dann fängt das Optimieren an, sicher lässt sich einiges mit Hilfe des superschnellen lokalen Speichers auf der Graka beschleunigen.

    Ich werde mich mal an asm-SIMD mittels SSE versuchen, wer Lust hat, kann ja jeweils 16er-Gruppen von Körpern per einem AVX-Register gleichzeitig berechnen!
    Und da ja Floats berechnet werden, könnte jemand die immer noch im Prozessor vorhandene FPU verwenden :rolleyes:
    Möglichkeiten gibts viele..... ;)

  • n-body Simulation

    • Andy
    • 9. Juni 2013 um 21:46
    Zitat

    Nicht nur mathematisch sondern auch ästhetisch ansprechend .

    naja, für die ansprechende Ästhetik musste ich mathematisch ein wenig schummeln^^
    die Zeile

    [autoit]

    If $1sqr > .01 Then $1sqr = .01 ;Anziehungskräfte begrenzen

    [/autoit]

    gehört da eigentlich nicht rein, aber es entsteht folgendes Problem. Wenn die Körper sehr dicht aneinander sind, beschleunigen sie sich gegenseitig so stark, dass die Geschwindigkeit so hoch wird, dass sie sich gegenseitig "wegschiessen". D.h. die Geschwindigkeit ist so hoch, dass sie auch nicht von der Gravitation der anderen Körper beeinflusst wird.

    Der andere Fall tritt auf, wenn die Gravitation zu stark wird. Dann bilden sich schnell Gruppen, welche sich mit anderen Gruppen durch die gegenseitige Anziehung verbinden, bis schlußendlich nur noch ein Punkt übrig bleibt.

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™