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

Beiträge von BugFix

  • BDE Konfiguration

    • BugFix
    • 13. Februar 2007 um 15:47

    Hi,
    falls ihr ab und an dBase-Dateien in Excel laden wollt und ihr bekommt 'ne Fehlermeldung: "..unbekanntes Datenformat.." oder ähnlich, dann kann die Ursache dafür in einer fehlerhaften Einstellung der Borland Database Engine liegen.
    Z.B. sind Telefonbuch-CD's mit steinalten BDE-Versionen ausgestattet, die bei jedem Start die BDE-Einstellungen zerschießen.
    Hatte das Problem in der Firma, dass ich aus meiner Fachanwendung plötzlich keine Reports in Excel öffnen konnte und hab ewig gesucht, bis ich heraus gefunden habe, dass fehlerhafte BDE-Einstellungen die Ursache waren.
    Entstanden ist daraus dieses Tool:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #Include <GuiListView.au3>
    Dim $type = "REG_SZ", $succ = 0, $succComp = 0
    Dim $keyVersion = "HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database Engine\Settings\DRIVERS\DBASE\INIT"
    Dim $valNameVersion = "VERSION"
    Dim $valVersion = "4.0"
    Dim $keyLang = "HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database Engine\Settings\DRIVERS\DBASE\INIT"
    Dim $valNameLang = "LANGDRIVER"
    Dim $valLang = "DB850DE0"
    Dim $keyLevel = "HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database Engine\Settings\DRIVERS\DBASE\TABLE CREATE"
    Dim $valNameLevel = "LEVEL"
    Dim $valLevel = "5"
    Dim $arStatusReg[3], $status
    Dim $steelblue = 0xB0C4DE, $khaki = 0xF0E68C, $violet = 0x800080, $rot = 0xFF0000
    Dim $txt = @LF & @LF & "Sollten sich dBase-Dateien nicht im Excel öffnen lassen"& @LF & "(..unbekanntes Datenformat..), " & _
    "so ist vermutlich eine fehlerhafte Einstellung der Borland Database Engine die Ursache." & @LF & @LF & _
    "Dieses Programm überprüft die Einstellungen und paßt sie ggf. an."
    Dim $txtChg = "Es müssen Einstellungen geändert werden."
    Dim $txtNoChg = "Die Einstellungen sind korrekt. - Keine Änderungen."

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

    ; Start GUI
    $Form1 = GUICreate("AForm1", 356, 257, -1, -1, BitOR($WS_POPUP, $WS_BORDER))
    GUISetBkColor($steelblue)
    $Input1 = GUICtrlCreateInput("Konfiguration der Borland Database Engine", 8, 8, 340, 22, BitOR ($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY))
    GUICtrlSetFont(-1, 9, 800, 0, "Verdana")
    GUICtrlSetColor(-1, $violet)
    GUICtrlSetBkColor(-1, $khaki)
    $Label1 = GUICtrlCreateLabel($txt, 8, 45, 340, 120, BitOR($SS_CENTER,$SS_SUNKEN))
    GUICtrlSetBkColor(-1, $khaki)
    $ret1 = _GUICtrlCreateColorButton("Weiter", 8, 180, 90, 25, $khaki, $violet)
    $btnRun = $ret1[0]
    $ret2 = _GUICtrlCreateColorButton("Abbrechen", 258, 180, 90, 25, $khaki, $violet)
    $btnEnd = $ret2[0]
    $Input2 = GUICtrlCreateInput("© BugFix 2007 ( Colored Button by rakudave )", 8, 226, 340, 22, BitOR($ES_CENTER,$ES_AUTOHSCROLL,$ES_READONLY))
    GUICtrlSetBkColor(-1, $khaki)
    GUICtrlSetFont(-1, 9, 550, 0, "Verdana")
    GUICtrlSetColor(-1, $violet)
    ; GUI Settings
    $Form2 = GUICreate("AForm2", 365, 201, -1, -1, BitOR($WS_POPUP,$WS_BORDER))
    GUISetBkColor($steelblue)
    $ListView1 = GUICtrlCreateListView("Parameter|IST - Wert|SOLL - Wert", 12, 11, 337, 105, -1, BitOR($WS_EX_CLIENTEDGE,$LVS_EX_GRIDLINES))
    GUICtrlSetBkColor(-1, $khaki)
    _GUICtrlListViewSetColumnWidth(-1, 0, 111)
    _GUICtrlListViewSetColumnWidth(-1, 1, 108)
    _GUICtrlListViewSetColumnWidth(-1, 2, 108)
    $ListView1_0 = GUICtrlCreateListViewItem("VERSION", $ListView1)
    $ListView1_1 = GUICtrlCreateListViewItem("", $ListView1)
    $ListView1_2 = GUICtrlCreateListViewItem("LANGDRIVER", $ListView1)
    $ListView1_3 = GUICtrlCreateListViewItem("", $ListView1)
    $ListView1_4 = GUICtrlCreateListViewItem("LEVEL", $ListView1)
    $Label2 = GUICtrlCreateLabel("", 12, 129, 337, 20, BitOR($SS_CENTER,$SS_CENTERIMAGE,$SS_SUNKEN))
    GUICtrlSetBkColor(-1, $khaki)
    GUICtrlSetColor(-1, $rot)
    GUICtrlSetFont(-1, 9, 550, 0, "Verdana")
    $ret3 = _GUICtrlCreateColorButton("Weiter", 12, 164, 90, 25, $khaki, $violet)
    $btnWeiter = $ret3[0]
    $ret4 = _GUICtrlCreateColorButton("Abbrechen", 260, 164, 90, 25, $khaki, $violet)
    $btnEsc = $ret4[0]
    GUISetState(@SW_SHOW, $Form1)
    GUICtrlSetState(8, $GUI_FOCUS)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $btnEnd
    GUICtrlSetStyle($btnEnd, $SS_ETCHEDFRAME)
    Sleep(150)
    GUICtrlSetStyle($btnEnd, $SS_NOTIFY + $SS_GRAYRECT)
    Sleep(100)
    Exit
    Case $btnRun
    GUICtrlSetStyle($btnRun, $SS_ETCHEDFRAME)
    Sleep(150)
    GUICtrlSetStyle($btnRun, $SS_NOTIFY + $SS_GRAYRECT)
    Sleep(100)
    _readReg()
    ExitLoop
    EndSwitch
    WEnd
    GUIDelete($Form1)
    GUISetState(@SW_SHOW, $Form2)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $btnEsc
    GUICtrlSetStyle($btnEsc, $SS_ETCHEDFRAME)
    Sleep(150)
    GUICtrlSetStyle($btnEsc, $SS_NOTIFY + $SS_GRAYRECT)
    Sleep(100)
    Exit
    Case $btnWeiter
    GUICtrlSetStyle($btnWeiter, $SS_ETCHEDFRAME)
    Sleep(150)
    GUICtrlSetStyle($btnWeiter, $SS_NOTIFY + $SS_GRAYRECT)
    Sleep(100)
    If $status <> 0 Then _writeReg($arStatusReg[0], $arStatusReg[1], $arStatusReg[2])
    ExitLoop
    EndSwitch
    WEnd
    Exit

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

    Func _readReg()
    Dim $var
    $var = RegRead($keyVersion, $valNameVersion)
    _GUICtrlListViewSetItemText($ListView1, 0, 1, $var)
    _GUICtrlListViewSetItemText($ListView1, 0, 2, $valVersion)
    If $var = $valVersion Then
    $arStatusReg[0] = 0
    Else
    $arStatusReg[0] = 1
    EndIf
    $var = RegRead($keyLang, $valNameLang)
    _GUICtrlListViewSetItemText($ListView1, 2, 1, $var)
    _GUICtrlListViewSetItemText($ListView1, 2, 2, $valLang)
    If $var = $valLang Then
    $arStatusReg[1] = 0
    Else
    $arStatusReg[1] = 1
    EndIf
    $var = RegRead($keyLevel, $valNameLevel)
    _GUICtrlListViewSetItemText($ListView1, 4, 1, $var)
    _GUICtrlListViewSetItemText($ListView1, 4, 2, $valLevel)
    If $var = $valLevel Then
    $arStatusReg[2] = 0
    Else
    $arStatusReg[2] = 1
    EndIf
    $status = $arStatusReg[0] + $arStatusReg[1] + $arStatusReg[2]
    If $status = 0 Then
    GUICtrlSetData($Label2, $txtNoChg)
    Else
    GUICtrlSetData($Label2, $txtChg)
    EndIf
    EndFunc

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

    Func _writeReg($ver=1, $lang=1, $level=1)
    Select
    Case $ver = 1
    $succComp += 1
    If RegWrite($keyVersion, $valNameVersion, $type, $valVersion) = 1 Then $succ += 1
    Case $lang = 1
    $succComp += 1
    If RegWrite($keyLang, $valNameLang, $type, $valLang) = 1 Then $succ += 1
    Case $level = 1
    $succComp += 1
    If RegWrite($keyLevel, $valNameLevel, $type, $valLevel) = 1 Then $succ += 1
    EndSelect
    If $succ = $succComp Then
    MsgBox(262208, "Borland Database Settings", "Änderungen erfolgreich übernommen.")
    Else
    MsgBox(262160, "Borland Database Settings", "Fehler, Änderungen konnten nicht übernommen werden!" & @LF & _
    "Bitte überprüfen Sie, ob Ihr Account über ausreichende Berechtigungen zum Ändern der Registry verfügt.")
    EndIf
    EndFunc

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

    ;=============================================================================
    ;
    ; Function Name: _GUICtrlCreateColorButton()
    ;
    ; Description: Creates a colored Button
    ;
    ; Syntax: _GUICtrlCreateColorButton($text, $left, $top, $width, $height,$bkcolor[,$fontcolor])
    ;
    ; Parameter(s); $text = The text of the control
    ; $left = The left side of the control
    ; $top = The top of the control
    ; $width = The width of the control
    ; $height = The height of the control
    ; $bkcolor = Backgroundcolor of the control
    ; $fontcolor = [optional] Fontcolor of the control
    ;
    ; Return Value(s): array[1] = used to change colors
    ; array[0] = notifies GUIGetMsg if user clicks
    ;
    ; Author: rakudave <[email='rakudave@gmx.net'][/email]>
    ;=============================================================================
    Func _GUICtrlCreateColorButton($text, $left, $top, $width, $height, $bkcolor, $fontcolor = -1)
    Local $colbut[2]
    If $fontcolor == -1 Then $fontcolor = 0x000000
    $colbut[0] = GUICtrlCreateLabel("", $left, $top, $width, $height, $SS_BLACKRECT)
    GUICtrlCreateLabel("", $left, $top, $width - 1, $height - 1, $SS_WHITERECT)
    GUICtrlCreateLabel("", $left + 1, $top + 1, $width - 2, $height - 2, $SS_GRAYRECT)
    $colbut[1] = GUICtrlCreateLabel($text, $left + 1, $top + 1, $width - 3, $height - 3, $SS_NOTIFY & $SS_CENTER)
    GUICtrlSetBkColor(-1, $bkcolor)
    GUICtrlSetColor(-1, $fontcolor)
    GUICtrlSetFont(-1, 9, 600, 0, "Verdana")
    Return $colbut
    EndFunc ;==>_GUICtrlCreateColorButton

    [/autoit]

    Dateien

    BDEconfig.au3 7,7 kB – 526 Downloads
  • Funktionen ??

    • BugFix
    • 13. Februar 2007 um 10:31

    Dann wird die Bedingung (Fenstertitel + Text) nicht übereinstimmen mit dem Zustand im Programm.
    Zum Prüfen häng mal

    [autoit]

    MsgBox(0,"Text", WinGetText("Primavera 5.0 Service Pack 2 - InstallShield Wizard"))

    [/autoit]

    an und schau nach welcher Text dir zurückgegeben wird.

    Edit:

    Zitat

    Habt irh noch nen paar gute Tips (Bücher, Sites) wo ich mich über sämtliche Funktionen einlesen kann ??


    JA, zum einen die Hilfe selbst, zum andren das Tutorial (oben links im Boardmenü).

  • Funktionen ??

    • BugFix
    • 13. Februar 2007 um 10:17

    Ich würde ganz auf den Aufruf mit Adlib verzichten.
    Bsp.:

    [autoit]


    While 1
    If WinExists("Primavera 5.0 Service Pack 2 - InstallShield Wizard","Yes, I want to resta") Then
    WinActivate("Primavera 5.0 Service Pack 2 - InstallShield Wizard","Yes, I want to resta")
    Send("{DOWN}{ENTER}")
    ExitLoop
    ElseIf WinExists("Primavera 5.0 Service Pack 2 - InstallShield Wizard","InstallShield Wizard Complete") Then
    WinActivate("Primavera 5.0 Service Pack 2 - InstallShield Wizard","InstallShield Wizard Complete")
    Send("{ENTER}")
    ExitLoop
    EndIf
    Sleep(500)
    WEnd
    Exit

    [/autoit]


    Aber prüf mal mit dem "AutoIt Window Info" - Tool, ob du nicht direkt mit ControlClick() auf die Controls zugreifen kannst, z.B. per classname.

  • Shutdown bzw. Ruhezustand abfangen

    • BugFix
    • 12. Februar 2007 um 17:36

    Kann mir nicht vorstellen, dass das möglich ist. Aber wenn du in den Systemeinstellungen von Windows die Ruheeinstellung deaktivierst, sollte das doch dein Problem lösen - oder?

  • Array in Liste ausgeben ?

    • BugFix
    • 12. Februar 2007 um 17:29

    Hi viper67,

    du hast nicht ganz unrecht, die Arrays (also die mehrdimensionalen), kommen in der Hilfe ein bischen ( naja eher total ;) ) dünn weg.
    Habe deinen Hilferuf erhört und schon mal das Wesentliche zu Mehrdimensionalen Arrays im Wiki hinterlegt. Sollte da noch mehr mit rein, dann sag mal an, wo Probleme sind. -> Wenn man erst mal mit umgehen kann, fehlt einem etwas der Blick auf die Anfangsschwierigkeiten. ;)

  • *.exe auf CD-ROM starten

    • BugFix
    • 12. Februar 2007 um 13:41

    Hi
    ich hatte mal eine Funktion zur Erkennung optischer Laufwerke geschrieben (hier).
    Vielleicht kannst du das verwenden.

    Hier eine Idee von mir:

    Spoiler anzeigen
    [autoit]

    Dim $PathOnCD = "\" ; hier anpassen - muß mit Backslash beginnen
    Dim $Lw, $TruePath

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

    For $i = 1 To 2
    $Lw = _GetCdDriveInfo($i,1)
    If $Lw = "" Then
    MsgBox(16, '', "Kein CD-Laufwerk vorhanden.")
    ExitLoop
    Else
    If FileExists($Lw & $PathOnCD) Then
    $TruePath = $Lw & $PathOnCD
    ExitLoop
    EndIf
    EndIf
    Next

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

    ;==================================================================================================
    ; Function: _GetCdDriveInfo($cd_pos, $cd_info_type)
    ;
    ; Description: Get Info of physical CD/DVD-drives (Drive-Letter, Device-Name, Firmware)
    ;
    ; Parameter(s): $cd_pos
    ; 1= First Drive;
    ; 2= Second Drive;
    ; 3= Info of Both Drives with Seperator " | "
    ; $cd_info_type
    ; 1= Drive-Letter only
    ; 2= Device-Name only
    ; 3= Firmware-Version only
    ; 4= Drive-Letter & " " & Device-Name
    ; 5= Drive-Letter & " " & Device-Name & " " & Firmware-Version
    ;
    ; Return Value: i.e. D:[ HL-DT-ST DVDRAM GSA-4081B][ v.A100] | [E:][ TOSHIBA DVD-ROM SD-M1612][ v.1004]
    ; Sets @ERROR to: 1 - no CD/DVD-Device found
    ; 2 - Second CD/DVD-Device not found
    ; no @ERROR sets if $cd_pos= 3 and Second CD/DVD-Device was'nt found
    ; Return only First Drive Info
    ;
    ; Author: BugFix ([email='bug_fix@web.de'][/email])
    ;==================================================================================================
    #include <String.au3>

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

    Func _GetCdDriveInfo($cd_pos = 1, $cd_info_type = 1)
    $cd1 = ""
    $cd1_name = "no_drive"
    $cd1_fw = ""
    $cd2 = ""
    $cd2_name = "no_drive"
    $cd2_fw = ""
    $p2 = 0

    For $a = 68 To 90
    $drv = Chr($a)
    $reg = RegRead("HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices", "\DosDevices\" & $drv & ":")
    $val = ""
    $name = ""
    For $i = 1 To StringLen($reg) - 2 Step 2
    $tmp = _HexToString(StringMid($reg, $i, 2))
    If $tmp <> "" Then
    $val = $val & $tmp
    EndIf
    Next
    $p1 = StringInStr($val, "#") + 1
    $type = StringMid($val, $p1, 5)
    If $type = "CdRom" Then
    $p2 = StringInStr($val, "__")
    If $p2 > 6 Then
    $name = StringMid($val, $p1 + 5, $p2- ($p1 + 5))
    $name = StringReplace($name, "_", " ")
    If $cd1 = "" Then
    $cd1 = $drv & ":"
    $cd1_name = $name
    Else
    $cd2 = $drv & ":"
    $cd2_name = $name
    EndIf
    $p3 = StringInStr($val, "#", 0, 2)
    For $i = $p3 - 1 To $p2 Step - 1
    If StringMid($val, $i, 1) <> "_" Then
    $pos_fw_end = $i
    ExitLoop
    EndIf
    Next
    For $i = $pos_fw_end To $p2 Step - 1
    If StringMid($val, $i, 1) = "_" Then
    $pos_fw_begin = $i+1
    $fw_len = $pos_fw_end - $pos_fw_begin +1
    ExitLoop
    EndIf
    Next
    $cd_fw = "v." & StringMid($val, $pos_fw_begin, $fw_len)
    If $cd1_fw = "" Then
    $cd1_fw = $cd_fw
    Else
    $cd2_fw = $cd_fw
    EndIf
    EndIf
    EndIf
    $p2 = 0
    Next
    If $cd1_name = "no_drive" And $cd2_name = "no_drive" Then
    SetError(1)
    Return False
    EndIf
    If $cd2_name = "no_drive" And $cd_pos = 2 Then
    SetError(2)
    Return False
    EndIf
    Select
    Case ($cd_pos = 1 Or ($cd_pos = 3 And $cd2_name = "no_drive")) And $cd_info_type = 1
    Return $cd1
    Case ($cd_pos = 1 Or ($cd_pos = 3 And $cd2_name = "no_drive")) And $cd_info_type = 2
    Return $cd1_name
    Case ($cd_pos = 1 Or ($cd_pos = 3 And $cd2_name = "no_drive")) And $cd_info_type = 3
    Return $cd1_fw
    Case ($cd_pos = 1 Or ($cd_pos = 3 And $cd2_name = "no_drive")) And $cd_info_type = 4
    Return $cd1 & " " & $cd1_name
    Case ($cd_pos = 1 Or ($cd_pos = 3 And $cd2_name = "no_drive")) And $cd_info_type = 5
    Return $cd1 & " " & $cd1_name & " " & $cd1_fw
    Case $cd_pos = 2 And $cd_info_type = 1
    Return $cd2
    Case $cd_pos = 2 And $cd_info_type = 2
    Return $cd2_name
    Case $cd_pos = 2 And $cd_info_type = 3
    Return $cd2_fw
    Case $cd_pos = 2 And $cd_info_type = 4
    Return $cd2 & " " & $cd2_name
    Case $cd_pos = 2 And $cd_info_type = 5
    Return $cd2 & " " & $cd2_name & " " & $cd2_fw
    Case $cd_pos = 3 And $cd_info_type = 1
    Return $cd1 & " | " & $cd2
    Case $cd_pos = 3 And $cd_info_type = 2
    Return $cd1_name & " | " & $cd2_name
    Case $cd_pos = 3 And $cd_info_type = 3
    Return $cd1_fw & " | " & $cd2_fw
    Case $cd_pos = 3 And $cd_info_type = 4
    Return $cd1 & " " & $cd1_name & " | " & $cd2 & " " & $cd2_name
    Case $cd_pos = 3 And $cd_info_type = 5
    Return $cd1 & " " & $cd1_name & " " & $cd1_fw & " | " & $cd2 & " " & $cd2_name & " " & $cd2_fw
    EndSelect
    EndFunc ;==>_GetCdDriveInfo

    [/autoit]
  • Konsoleprogramme einbinden

    • BugFix
    • 11. Februar 2007 um 19:47

    Also hier mein Fazit.
    Hätte nicht geglaubt, dass es so etwas gibt. Aber shorten kann definitiv NICHT mit Run(), RunWait(), ShellExecute() oder ShellExecuteWait() geöffnet werden. Selbst wenn ich im selben Verzeichnis bin, wird die Datei über diese Befehle nicht gefunden. (*wunder-mich*)
    Dann hab ich einen Umweg versucht und die Befehle in eine Batchdatei geschrieben und versucht diese über Run zu starten - mit demselben (Miss)Erfolg.
    Auf Consolenebene überhaupt kein Problem.
    Keine Ahnung warum das so ist.

    Tut mir leid, dassich da nicht weiterhelfen kann.

  • Konsoleprogramme einbinden

    • BugFix
    • 11. Februar 2007 um 18:15

    Ja, die Installanleitung geht ja mit meinen Gedanken konform, da als Installationsverzeichnis(se) (bzw. Kopierverzeichnis :) ) die Windowsordner bzw. Systemordner empfohlen werden, also Verzeichnisse auf die ein Path-Befehl gesetzt ist.
    Demzufolge setze einen Pfad auf das "shorten"-Verzeichnis oder wechsle vor Ausführung in diesen Ordner.

    EDIT:
    Ich saug mir mal das Tool und teste selber. Bis später.

  • Beep Komponist

    • BugFix
    • 11. Februar 2007 um 17:15

    Hi Vinschni,

    also grundlegender Fehler:

    Du willst in eine INI-Datei schreiben verwendest aber FileOpen, Filewrite.

    Du brauchst also Klarheit,wie die INI aussehen soll.
    Grundstruktur:

    [section]
    key1=value
    key2=value

    Schau mal in der Hilfe unter IniWrite, IniRead etc. . Dann wird dir sicher alles klarer. Falls nicht frag nochmal nach.

  • Konsoleprogramme einbinden

    • BugFix
    • 11. Februar 2007 um 17:00

    Wird für "shorten" bei der Installation ein Pfad eingerichtet? Wenn nicht, mußt du doch in jedem Fall in das Arbeitsverzeichnis von "shorten" wechseln, bzw. dieses im RunWait -Befehl definieren. Oder liege ich da falsch?

  • Array in Liste ausgeben ?

    • BugFix
    • 11. Februar 2007 um 15:25

    Hi, das funzt schon so:

    Spoiler anzeigen
    [autoit]

    Dim $aRecords[10]
    $aRecords[0] = 9
    For $i = 1 To $aRecords[0]
    $aRecords[$i] = "Item " & $i
    Next

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

    $txt = ""
    For $i = 1 to $aRecords[0]
    $txt &= $aRecords[$i] & @LF
    Next
    MsgBox(0, '', $txt)

    [/autoit]


    Aber ich hatte in meinem Bsp. von der Vorlage kopiert und dort war "$x" als Schleifenvariable. Innerhalb der Schleife habe ich aus Gewohnheit "$i" verwendet. ;)

  • exe dateien verkleinern

    • BugFix
    • 11. Februar 2007 um 13:42

    "Assembler" ist Maschinencode - also die Befehle, die direkt für das Ansprechen der Hardware verwendet werden.
    Alle anderen Programmiersprachen müssen zur Laufzeit in den Assemblercode übersetzt werden, damit die Hardware überhaupt agiert ;)
    Aber ich denke mal, noch gründlicher kann Google dich aufklären. :)

    Edit: Pee war wieder mal schneller :weinen:

  • Array in Liste ausgeben ?

    • BugFix
    • 11. Februar 2007 um 13:12
    Zitat

    Als Ausgabe erfolgte die Anzeige der Zeilen und das so oft wie es die Zeilen gibt.

    Verstehe ich nicht ganz, was du jetzt meinst. Es wird in jedem Schleifendurchlauf der Inhalt des Arrays an der aktuellen Pos. $i zur Variable $txt hinzugefügt und ein Zeilenumbruch angehängt.
    Nach Beenden der Schleife wird der Inhalt von $txt ausgegeben.

    Zitat

    Aber was macht genau der Ubound Befehl mit der - 1 hinten dran =?

    Ubound() gibt die obere Grenze (upper Bound) des Arrays aus. Da Arrays 0-indexiert sind (Element 1 = $ar[0] usw.) erhältst du z.B. für ein Array mit 10 Elementen auch UBound = 10. Um auf das Element zuzugreifen mußt du es aber mit dem Index adressieren und der ist 1 weniger, da bei 0 beginnend. ==> Deshalb: UBound -1

  • exe dateien verkleinern

    • BugFix
    • 11. Februar 2007 um 11:51

    Das Zauberwort: CleanScript von Pee

  • New ListView Flag: $GUI_BKCOLOR_LV_ALTERNATE

    • BugFix
    • 11. Februar 2007 um 11:37

    In der aktuellen Prod. wurde Für ListView das Flag: $GUI_BKCOLOR_LV_ALTERNATE übernommen. Die Erklärung dazu in der Hilfe ist recht mager:

    Zitat

    The special flag $GUI_BKCOLOR_LV_ALTERNATE can be used with Listview control to give alternate background of the ListviewItems lines.
    The odd lines will get the color set by GUICtrlSetBkColor of the Listview control.
    The even lines will get the color set by GUICtrlSetBkColor of the ListviewItem control.

    Speziell der Hinweis auf die ungeraden (odd) und geraden (even) Zeilen ist schon verwirrend. Denn die Adressierung im Listview ist ja 0-Index-basierend. D.h. der mit der geraden Zahl "0" adressierte Eintrag wird hier (da Eintrag "1") als ungerade betrachtet. :(
    Aber wenn man es weiß, ists OK. :)
    Über die Syntax, wie das Flag gesetzt werden soll, steht gar nix da. Auch das englische Forum hilft dort nicht viel weiter.

    Mit etwas Probieren habe ich eine funktionsfähige Variante gefunden - ob dies auch die angedachte Syntax ist weiß ich nicht ;)

    Zur Funktionsweise:

    - Alle ungeradzahligen Einträge (bzw. die mit geradzahligem Index) UND alle Einträge für die KEINE BkColor einzeln definiert wurde erhalten die BkColor des ListView

    - Alle geradzahligen Einträge (bzw. die mit ungeradzahligem Index) erhalten die BkColor des ListViewItem, sofern dies definiert wurde.

    Hier ein Code-Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GuiListView.au3>
    Dim $aqua = 0x00FFFF, $khaki = 0xF0E68C, $yellow = 0xffff00

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

    $Form1 = GUICreate("AForm1", 370, 270, 193, 115)
    $ListView1 = GUICtrlCreateListView("< 0 >|< 1 >|< 2 >", 10, 10, 350, 250)
    GUICtrlSetBkColor(-1, $aqua); gilt für jeden ungeraden Eintrag (1. , 3. , 5. usw.) UND für alle Einträge OHNE eigene BackColor-Definition
    GUICtrlSetBkColor($ListView1, $GUI_BKCOLOR_LV_ALTERNATE)
    $ListView1_0 = GUICtrlCreateListViewItem("Erster|ListView BackColor|odd line", $ListView1) ; BackColor von Listview
    GUICtrlSetBkColor(-1, $yellow) ; wird durch $GUI_BKCOLOR_LV_ALTERNATE ignoriert
    $ListView1_1 = GUICtrlCreateListViewItem("Zweiter|ListViewItem BackColor|even line", $ListView1)
    GUICtrlSetBkColor(-1, $yellow)
    $ListView1_2 = GUICtrlCreateListViewItem("Dritter|ListView BackColor|odd line", $ListView1) ; BackColor von Listview
    $ListView1_3 = GUICtrlCreateListViewItem("Vierter|ListViewItem BackColor|even line", $ListView1)
    GUICtrlSetBkColor(-1, $khaki)
    $ListView1_4 = GUICtrlCreateListViewItem("Fünfter|ListView BackColor|odd line", $ListView1) ; BackColor von Listview
    $ListView1_5 = GUICtrlCreateListViewItem("Sechster|ListView BackColor (kein eig. BkCol. defin.)|even line", $ListView1) ; BackColor von Listview
    _GUICtrlListViewSetColumnWidth ($listview1, 0, 65)
    _GUICtrlListViewSetColumnWidth ($listview1, 1, 220)
    _GUICtrlListViewSetColumnWidth ($listview1, 2, 61)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    EDIT:
    Der eigentliche Sinn liegt wohl darin, dass für die ungeraden Einträge die BkColor des ListView erzwungen wird. Das ist auch praktisch, so versehe ich einfach jeden Eintrag mit einer alternativen BkColor - aber nur die geraden sind davon betroffen und ich erreiche eine abwechselnde Colorierung.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GuiListView.au3>
    Dim $aqua = 0x00FFFF, $khaki = 0xF0E68C, $yellow = 0xffff00
    Dim $arLvItem[8]
    $Form1 = GUICreate("AForm1", 370, 270, 193, 115)
    $ListView1 = GUICtrlCreateListView("< 0 >|< 1 >|< 2 >", 10, 10, 350, 250)
    GUICtrlSetBkColor(-1, $aqua); gilt für jeden ungeraden Eintrag (1. , 3. , 5. usw.) UND für alle Einträge OHNE eigene BackColor-Definition
    GUICtrlSetBkColor($ListView1, $GUI_BKCOLOR_LV_ALTERNATE)
    For $i = 0 To UBound($arLvItem) -1
    $arLvItem[$i] = GUICtrlCreateListViewItem("Eintrag "& $i &"|"& $i+1 &"|"& $i+2, $ListView1)
    GUICtrlSetBkColor(-1, $yellow)
    Next
    _GUICtrlListViewSetColumnWidth ($Listview1, 0, 65)
    _GUICtrlListViewSetColumnWidth ($Listview1, 1, 220)
    _GUICtrlListViewSetColumnWidth ($Listview1, 2, 61)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • GUI -> mehrere Dateien und/oder Ordnerinhalt importieren

    • BugFix
    • 10. Februar 2007 um 23:41

    Hilfe für den Ansatz:

    - GUI mit ListeView (Style Multiselect!)
    - Ordner mit FileSelectFolder aussuchen
    - alle Dateien des gewünschten Typs auslesen und in die Liste eintragen
    - gewünschte Dateien markieren
    - selektierte Files konvertieren

  • Auslesen eines Textfeldes

    • BugFix
    • 10. Februar 2007 um 22:57

    Hier ein Beispiel:

    [autoit]


    Dim $text = "Systemeigenschaften"
    Dim $ClassNameNN = "Button1"

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

    Send("{LWINDOWN}{PAUSE}{LWINUP}")
    WinWaitActive($text)
    ControlClick($text,"",$ClassNameNN)

    [/autoit]
  • Hilfetext in eigenen Funktionen

    • BugFix
    • 10. Februar 2007 um 16:26
    Zitat

    ( This file is located in Scite Directory \ api \ au3.user.calltips.api for any reason to backup. )


    In dieser Datei fügst du die entsprechenden Zeilen ein.
    Z.B. so:
    _DoSQL("SQL-Befehl", Datenbank-Pfad)Führt SQL-Befehl in DB aus. Gibt Ergebnis zurück.(#Include <UDFs.au3>)

  • Hilfetext in eigenen Funktionen

    • BugFix
    • 10. Februar 2007 um 14:00

    Du meinst, eine Einblendung der Parameter, wie bei den Standardfunktionen während des Editierens?

  • GUISetOnEvent & Func mit Parametern

    • BugFix
    • 9. Februar 2007 um 21:23

    snoozer

    Zitat

    geht denk ich mal auf jeden fall warum ja kein plan^^ ist halt so^^ wenn nicht dann müssen die experten ran^^

    Dann versuch mal zu starten ;)
    Kann nicht gehen, da falsche Definition: GUICtrlSetOnEvent(-1, "_Click(1, 2)")

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™