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

Beiträge von Yjuq

  • Textabfrage GUICtrlread

    • Yjuq
    • 21. Dezember 2013 um 16:57

    Wo genau hängt es denn?
    Das Skript ist eigentlich sehr einfach gehalten.

  • Textabfrage GUICtrlread

    • Yjuq
    • 21. Dezember 2013 um 16:24

    Es gibt genug Möglichkeiten irgendetwas irgendwie umzusetzen. ^^
    Es kommt eigentlich immer auf’s Vorhaben an.

    Um mal deine Frage bezüglich der *.ini Datei zu beantworten:
    Natürlich lässt sich dies mit *.ini Dateien realisieren. Dafür brauchst du im Grunde nur die Funktion IniReadSection(). Du legst die *.ini Datei an und speicherst alle Namen beispielweise unter den Sektionsnamen „Name“. Die Key’s (Schlüssel) kannst du dir dann aussuchen. Im Nachhinein kannst du dann ganz einfach in einer Schleife überprüfen ob der gewünschte Name dabei ist:

    Spoiler anzeigen
    [autoit]

    $sINI = 'example.ini'
    $avName = IniReadSection($sINI, 'Name')

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

    $bIsName = False
    For $i = 1 To $avName[0][0]
    If Not (GUICtrlRead($id) = $avName[$i][1]) Then $bIsName = True
    Next

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

    If $bIsName Then
    ; Wenn Name drinne ist dann diesen Code ausführen...
    EndIf

    [/autoit]
  • Textabfrage GUICtrlread

    • Yjuq
    • 21. Dezember 2013 um 13:04

    Um dich einmal auf deinen Fehler aufmerksam zu machen:
    Das Schüsselwort Not wird noch vor dem Vergleich interpretiert.
    Das bedeutet, dass zuerst Not GUICtrlRead($Name) ausgeführt wird (was entweder True oder False ergibt) und das Ergebnis mit "Ralf" verglichen wird.
    Folgende beide Möglichkeiten existieren demnach:
    True = "Ralf"
    False = "Ralf"

    Dies lässt sich ganz leicht mit Klammern umgehen:
    Not (GUICtrlRead($Name) = "Ralf")

  • Mehrer Sections auslesen

    • Yjuq
    • 20. Dezember 2013 um 15:14

    Sollen alle Sektionen in das ListView eingebunden werden oder nur bestimmte?
    Wenn alle Sektionen eingebunden werden sollen, siehe Post #2.

    Wenn nur bestimmte, dann wird's schon schwieriger.
    Dann wäre vielleicht einige INI's die das Tool erstellt interessant.
    Vielleicht gibt es da möglichkeiten die einzelnen Sektionen zu unterscheiden.

    [autoit]

    #include <Array.au3>

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

    $sINI = 'example.ini'

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

    $asSection = IniReadSectionNames($sINI)
    _ArrayDisplay($asSection)

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

    For $i = 1 To $asSection[0]
    $asElement = IniReadSection($sINI, $asSection[$i])
    _ArrayDisplay($asElement)
    Next

    [/autoit]
  • Mehrer Sections auslesen

    • Yjuq
    • 20. Dezember 2013 um 14:54

    Wie gesagt, mit IniReadSectionNames() kannst du alle Sektionsnamen in der INI Datei auslesen.
    Aber ich frage mich woher weißt du dann weißt welche Sektion du dann benötigst...

    Am einfachsten wäre es, wenn du einmal schilderst was du genau vor hast.
    Eventuell gibt es alternativen welche einen einfacheren Lösungsweg versprechen.

  • Mehrer Sections auslesen

    • Yjuq
    • 20. Dezember 2013 um 14:35

    Mit IniReadSectionNames() kannst du die einzelnen Sektionsnamen auslesen.
    So kannst du dann später auf die Sektionen via IniReadSection() oder IniRead() zugreifen.

  • _WinAPI_BitBlt auf von Bitmap auf GUI

    • Yjuq
    • 16. Dezember 2013 um 15:45

    Andy:
    Naja,... Mir ist schon klar dass ich direkt in die GUI zeichnen könnte.
    Allerdings ist das für mein Vorhaben nicht von Vorteil...

    @Name:
    Dankeschön für das Beispiel :)

  • _WinAPI_BitBlt auf von Bitmap auf GUI

    • Yjuq
    • 16. Dezember 2013 um 04:56

    Hi, ich versuche schon eine ganze Weile eine Bitmap in eine GUI zu laden.
    In diese Bitmap zeichne ich eine Linie (will mal hoffen,... Nachürfen kann ich's nichts weil mir nichts anzeigt ^^) und möchte diese Bitmap dann ausgeben.
    Hier mal mein Versuch:

    [autoit]

    #include <WinAPI.au3>
    #include <WindowsConstants.au3>

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

    $hGUI = GUICreate('', 800, 600)
    GUISetState()

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

    $hDC = _WinAPI_GetDC($hGUI)
    $hBitmap = _WinAPI_CreateBitmap(800, 600)
    _WinAPI_DrawLine($hBitmap, 0, 0, 800, 600)
    _WinAPI_BitBlt($hDC, 0, 0, 800, 600, $hBitmap, 0, 0, $SRCCOPY)

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

    While GUIGetMsg() <> -3
    WEnd

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

    _WinAPI_DeleteObject($hBitmap)
    _WinAPI_ReleaseDC($hGUI, $hDC)

    [/autoit]

    Kann mir evtl. jemand sagen was ich hier falsch mache? Ich steig da leider nicht ganz hinter ^^
    (Abgesehen davon dass ich eigentlich ein Gerätekontext für BitBlt benötige, allerdings weiß ich nicht wie man diesen aus einer Bitmap bezieht)

  • DLLCall mit Pointer auf Struktur-Array

    • Yjuq
    • 16. Dezember 2013 um 02:32

    Doch klar,...
    Chess seine Variante müsste so funktionieren:

    [autoit]

    Global Const $tagDDA = 'ULONG snr; CHAR name[256]; INT dhcp; CHAR netmask[24]; CHAR gatewar[24]; INT signature'
    Global Const $iIndex = 4

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

    Global $tStruct = DllStructCreate('STRUCT pointer[' & $iIndex & ']')
    Global $atStruct[$iIndex]
    Global $i, $pStruct, $avRet

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

    For $i = 0 To $iIndex -1
    $atStruct[$i] = DllStructCreate($tagDDA)
    $pStruct = DllStructGetPtr($atStruct[$i])

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

    DllStructSetData($tStruct, 'pointer', $pStruct, $i +1) ;// Struktur füllen
    Next

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

    $pStruct = DllStructGetPtr($tStruct)

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

    $avRet = DllCall('ChipControl.dll', 'int', 'CCGetAllDevsInArray', _
    'ptr*', $pStruct, _ ;// Das hier ist jetzt Tricky :)
    ;// Der Übergebene Pointer zeigt zwar auf eine Struktur,
    ;// aber du willst ja die Strukturen die sich hinter den Pointer verstecken.
    ;// Demnach musst du angeben dass der Pointer auf weitere Pointer verweist.
    ;// Also: ptr* ^^
    'int', $iIndex)

    [/autoit]
  • Nutzt ihr die Deutsche Hilfe von AutoIt?

    • Yjuq
    • 15. Dezember 2013 um 20:00

    Tweaky:
    Du hast recht,...
    Ich hatte die Deutsche Hilfe wohl noch falsch in Errinnerung...
    Naja, verwende sie ja auch nicht so häufig...

    Aber dennoch gibt es minimale Unterschiede in der Schriftgröße die aber eigentlich nicht weiter störend sind.
    (€dit: Sorry, hab mir angewöhnt in die Beta Hilfe zu schauen. Zu den beiden Stable Hilfen gibt's keine Unterschiede...)
    Streich mal den Punkt wo's um's Design geht...

  • Nutzt ihr die Deutsche Hilfe von AutoIt?

    • Yjuq
    • 15. Dezember 2013 um 18:39

    Als ich noch die Basic’s des Programmierens lernte, war die deutsche Hilfe für mich ein Muss weil ich überhaupt kein Wort aus der englischen verstand. Mittlerweile ist mein Englisch nun schon so „gut“ geworden, dass ich den Größten Teil aus der englischen Hilfe verstehe. Nun nutze ich nur noch die Englische Hilfe aus folgenden 3 Gründen:
    - Erst einmal um mein Englisch allgemein zu verbessern
    - Mir gefällt das Design einfach besser als von der Deutschen Hilfe
    - Die englische Hilfe ist halt immer aktuell (muss ja ^^) und passt sich den Beta Versionen an

    Dennoch gibt es einige Situationen wo ich gerne auf die deutsche Online Hilfe zugreife. Das sind meist dann so Situationen wo ich das Englische in der englischen Hilfe nicht verstehe. Aber diese Situationen gibt es bei mir nur noch selten. Zudem nutze ich die Hilfe auch nur noch als Nachschlagwerk wenn mir die Funktionsweise eines Parameters entfallen ist...

    LG. Make :)

  • Vorschläge und Verbesserungen / Complaint Area

    • Yjuq
    • 15. Dezember 2013 um 17:24

    Naja, da gibts Abhilfe:

    [autoit]

    _StringBetween($sVar, '', Chr(92))

    [/autoit]

    Einfach einmal das hier durch jedes Skript rattern lassen xD

    [autoit]

    StringReplace($sSource, Chr(92), '" & Chr(92)')

    [/autoit]
  • Hackit

    • Yjuq
    • 15. Dezember 2013 um 16:34

    Sehr schönes Skript Andy. ^^
    Wie lange hast du gebraucht? :)

  • DLLCall mit Pointer auf Struktur-Array

    • Yjuq
    • 15. Dezember 2013 um 04:11

    Um Gottes willen! Nein,... Auf keinen Fall so xD
    Du musst die Struktur glücklicherweise nur ein einziges mal eintippen (glück gehabt ^^)
    Das sieht in etwa dann so aus:

    Spoiler anzeigen
    [autoit]

    Global $tagDDA = 'ULONG snr;' & _
    'CHAR name[256];' & _
    'int dhcp;' & _
    'CHAR ip[24];' & _
    'CHAR netmask[24];' & _
    'CHAR gateway[24];' & _
    'int signature'
    Global $tDDA = DllStructCreate($tagDDA)

    [/autoit]

    Wenn du nun 5 Strukturen brauchst, kannst du diese einfach kopieren.
    Ich schlage vor Du schreibst die Kopien in ein Array:

    Spoiler anzeigen
    [autoit]

    Global $atDDA[5], $i
    For $i = 0 To UBound($atDDA) -1
    $atDDA[$i] = $tDDA
    Next

    [/autoit]

    Den Zugriff auf die einzelnen Strukturelemente mit dem Punkt Operator ist seit der AutoIt Version 3.3.9.6 (Beta) möglich.
    In allen älteren Versionen nur mit den Funktionen „DllStructSetData“ sowie „DllStructGetData“.

    Mit Punkt Operator (Dafür den Präprozessor Befehl „#AutoIt3Wrapper_Version = B“ setzen):

    Spoiler anzeigen
    [autoit]

    $atDDa[0].snr = 1
    $atDDa[1].snr = 2
    $atDDa[2].snr = 3
    $atDDa[3].snr = 4
    $atDDa[4].snr = 5

    [/autoit]

    Mit den DLL-Funktionen:

    Spoiler anzeigen
    [autoit]

    DllStructSetData($atDDA[0], 'snr', 1)
    DllStructSetData($atDDA[1], 'snr', 2)
    DllStructSetData($atDDA[2], 'snr', 3)
    DllStructSetData($atDDA[3], 'snr', 4)
    DllStructSetData($atDDA[4], 'snr', 5)

    [/autoit]

    Danach nur noch die DLL Aufrufe :)

    Spoiler anzeigen
    [autoit]

    Global $aiRet[5], $avRet, $pStruct
    For $i = 0 To UBound($atDDA) -1
    $pStruct = DllStructGetPtr($atDDA[$i])
    $avRet = DllCall('ChipControl.dll', 'int', 'CCGetAllDevsInArray', 'ptr', $pStruct, 'int', 4)
    $aiRet[$i] = $avRet[0]
    Next

    [/autoit]

    Hier noch der ganze Code mit Ausgabe der Rückgabewerte:

    Spoiler anzeigen
    [autoit]

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

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

    #include <Array.au3>

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

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

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

    Global $i, $atDDA[5], $pStruct, $avRet, $aiRet[5]
    Global $tagDDA = 'ULONG snr;' & _
    'CHAR name[256];' & _
    'int dhcp;' & _
    'CHAR ip[24];' & _
    'CHAR netmask[24];' & _
    'CHAR gateway[24];' & _
    'int signature'
    Global $tDDA = DllStructCreate($tagDDA)

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

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

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

    For $i = 0 To UBound($atDDA) -1
    $atDDA[$i] = $tDDA
    Next

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

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

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

    DllStructSetData($atDDA[0], 'snr', 1)
    DllStructSetData($atDDA[1], 'snr', 2)
    DllStructSetData($atDDA[2], 'snr', 3)
    DllStructSetData($atDDA[3], 'snr', 4)
    DllStructSetData($atDDA[4], 'snr', 5)

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

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

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

    For $i = 0 To UBound($atDDA) -1
    $pStruct = DllStructGetPtr($atDDA[$i])
    $avRet = DllCall('ChipControl.dll', 'int', 'CCGetAllDevsInArray', 'ptr', $pStruct, 'int', 4)
    $aiRet[$i] = $avRet[0]
    Next

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

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

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

    _ArrayDisplay($aiRet)

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

    ; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +

    [/autoit]


    Zu deiner Frage:
    „ptr“ nimmt jeden Pointer (egal welcher Datentyp) an.
    „struct*“ dagegen nur Pointer von DLL Strukturen.
    Wenn ich mich nicht irre ist beides in deinem Fall verwendbar.

  • Inputbox stottert

    • Yjuq
    • 14. Dezember 2013 um 11:32

    Daran ist nur Koda schuld!
    Hätte man dieses Input Control per Hand schön säuberlich getippt,...

    Bei mir tritt dieses Phänomen nicht auf ^^

  • Hackit

    • Yjuq
    • 14. Dezember 2013 um 03:35

    Auch von mir gibt es wieder eine Kleinigkeit die es zu lösen gilt.
    Auf dem ersten Blick scheint dies doch ein wenig rätselhaft,
    jedoch sollte genau auf die Farbwahl geachtet werden!
    Ich wünsche viel Erfolg! [Blockierte Grafik: http://make.square7.ch/hackit/3.bmp]

  • RegExp loop um XSD Schemata auszulesen

    • Yjuq
    • 13. Dezember 2013 um 06:53

    Tut's nicht auch was einfaches?

    [autoit]

    #include <Array.au3>

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

    $sRead = '<xs:complexType name="cmplx1">' & @CRLF & _
    '<xs:sequence>' & @CRLF & _
    '<xs:element name="name1" type="type1"/>' & @CRLF & _
    '<xs:element name="nameN" type="typeN"/>' & @CRLF & _
    '</xs:sequence>' & @CRLF & _
    '</xs:complexType>' & @CRLF & _
    '<xs:complexType name="cmplxN">' & @CRLF & _
    '<xs:sequence>' & @CRLF & _
    '<xs:element name="name1" type="type1"/>' & @CRLF & _
    '<xs:element name="nameN" type="typeN"/>' & @CRLF & _
    '</xs:sequence>' & @CRLF & _
    '</xs:complexType>'

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

    $sPattern = '"(.*?)"' ; einfache Version
    ;~ $sPattern = '(?:name|type)="(.*?)"' ; ein wenig spezifischer
    ;~ $sPattern = '(?:xs:complexType name="(.*?)"|xs:element name="(.*?)" type="(.*?)")' ; naja ^^ --- Warum die Lücken im Array entstehen, keine Ahnung... :P

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

    $aRegEx = StringRegExp($sRead, $sPattern, 3)
    _ArrayDisplay($aRegEx)

    [/autoit]
  • Hackit

    • Yjuq
    • 12. Dezember 2013 um 22:30

    Sehr schön chess :D
    Da bin ich aber gar nicht drauf gekommen :/
    Hier übrigens die Lösung zu meinem Hackit:

    Spoiler anzeigen
    Code
    > _ _ v         x
    > . v _         .
        _ _         .
        _ _ > _ . _ . x
        . > . _ .   ^
    > _ . _ . v
        > . ^ .
          x   .
          .   .
          _   .
          ^ . <
    Alles anzeigen

    Zuerst müssen die Zeichen sortiert werden. Die Pfeile (<, >, v und ^) trennen dabei die einzelnen "Codeblöcke". In der ersten Spalte ist jeweils der Anfang zu sehen. Das x markiert dabei das Ende:

    Code
    _ _   _ _ _   . _ .   . . .
    .   _ _ . .   .   . .   _ . _ .
    _ . _ .   . . . .    .    _ .

    Dabei handelt es sich um Morsezeichen. Hintereinander gelesen bedeutet dies: "Morsezeichen". ^^

  • Hackit

    • Yjuq
    • 12. Dezember 2013 um 20:32

    @chess:
    Sorry, ich blicke bei deinem Hackit überhaubt nicht mehr durch...
    Ich kann keinen sinnvollen Zusammenhang erschließen ^^

    Awesome:
    Deines habe ich auch noch nicht gelöst, dafür weiß ich inzwischen dass du das mit "Visual Studio 2012" kompilliert hast.
    Zudem ist der Orginalname der exe "WindowsFormsApplication3.exe"
    Zudem kenne ich inzwischen auch deinen Vornamen :P
    --> Ich arbeite noch dran... :/

    Echt krass was ein Programm alles an Informationen speichert o.o

  • Hackit

    • Yjuq
    • 11. Dezember 2013 um 23:31

    Bevor hier jetzt ne Bahnbrechenende Diskussion anfängt: BugFix hat sich geäußert und sein Wort ist Gesetz :P
    Bleibt bitte beim eigentlichen Sinn des Threads...

    @chess: Nagut, ich gebe zu dass dies wohl zu einfach war :/
    Aber hier dürft ihr garantiert rätseln :D

    Code
    > _ _ v         x
    > . v _         .
        _ _         .
        _ _ > _ . _ . x
        . > . _ .   ^
    > _ . _ . v
        > . ^ .
          x   .
          .   .
          _   .
          ^ . <
    Alles anzeigen

    Als Hinweis: Es kommt ein existierendes Wort (und kein kryptischer Kleinmist ^^) heraus :D

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™