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

  • GUI dynamisch erstellen

    • BugFix
    • 28. September 2008 um 16:19

    Das Einfachste: Verwende ein ListView mit Checkbox-Style, dann ist es egal, wieviel Einträge du im Array hast.

  • GUI2 wirklich schließen und nciht verstecken

    • BugFix
    • 28. September 2008 um 16:12

    Was stört dich an @SW_HIDE ? Speicherplatzsorgen?
    Wenn du die GUI im weiteren Programm definitiv nicht mehr benötigst, kannst du sie, wie bereits in den vorigen Posts erwähnt, mit GUIDelete() "entsorgen".
    Falls du sie aber nochmals benötigst, wäre das hochgradig schwachsinnig sie jedesmal neu zu erstellen. ;)

  • µit - September

    • BugFix
    • 28. September 2008 um 07:40

    Hi,
    ich bin gerade am Ausprobieren der Versionen von Euch. Bei eukalyptus ist mir aber sofort ein Fehler aufgefallen:
    Durch Verwendung des kurzen Strings in der Schleife bei ADD spart er schön Zeit ;) ... aber der Speicherüberlauf geht verloren. Außerdem ist die Länge des Ergebnisstrings nicht passend.
    Laßt mal in allen Euren Skripts folgende Aufgabe durchlaufen:

    [autoit]

    $BigInt_1 = _StringRepeat('9', 180)
    $BigInt_2 = _StringRepeat('9', 90)

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

    ConsoleWrite(_BigInt_Add($BigInt_1, $BigInt_2) & @CRLF)

    [/autoit]

    Das Ergebnis muß 181 Stellen haben mit Überlauf bis zur ersten Position.

    Code
    1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000999999999999999999999999999999999999999999999999999999999999999999999999999999999999999998

    Für die MUL gilt das analog. Das Ergebnis bei eukalyptus ist nur 222 Stellen lang. 180 9en mal 90 9en müssen aber logischerweise 180 +90 ==> also 270 Stellen werden.

    Code
    999999999999999999999999999999999999999999999999999999999999999999999999999999999999999998999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

    Ich denke mal, da wird der Benchmarktest nicht allen Erfordernissen im geforderten Zahlenbereich bis 200 Stellen Länge gerecht.

    Edit

    Ich habe die vorangestellte Aufgabe mit den Versionen von eukalyptus, peethebee, Oscar und mir getestet. Außer bei eukalyptus wird überall das richtige Ergebnis geliefert.
    @eukal: Na, wohl doch etwas überoptimiert? :whistling:

  • Kann mir bitte einer ein Skript erstellen?

    • BugFix
    • 27. September 2008 um 21:51
    Zitat von Amandil

    Hallo liebe Community,
    ich würde mich freuen wenn mir einer ein Skript schreiben könnte,


    :D - Ich könnte dir vielleicht noch ein Mandeltörtchen backen...
    Aber wie peethebee schon sagt: Es ist nicht schwer und wenn trotzdem Fragen auftauchen, helfen wir schon. Aber erst mal selber anfangen.

  • µit - September

    • BugFix
    • 27. September 2008 um 20:17

    So, Abgabetermin ist rum.
    Auch wenn ich nicht auf dem Podest lande, hier meine SpeedVariante (ca. 0,12 sec).

    Spoiler anzeigen
    [autoit]

    #include-once

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

    Func _BigInt_Load($S)
    Return $S
    EndFunc ;==>_BigInt_Load

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

    Func _BigInt_Print($S)
    Return $S
    EndFunc ;==>_BigInt_Print

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

    Func _BigInt_Add(ByRef $1, ByRef $2)
    Local $l1 = StringLen($1), $l2 = StringLen($2), $s0 = ''
    Select
    Case $l1 > $l2
    For $j = 1 To $l1 - $l2
    $s0 &= '0'
    Next
    $2 = $s0 & $2
    Case Else
    For $j = 1 To $l2 - $l1
    $s0 &= '0'
    Next
    $1 = $s0 & $1
    EndSelect
    Local $ue = '0', $out = '', $tmp, $tlen, $s0
    While StringLen($1) > 14
    $tmp = StringRight($1, 14) + StringRight($2, 14) + $ue
    $tlen = StringLen($tmp)
    Switch $tlen
    Case 0 To 13
    $s0 = ''
    For $j = 1 To (14 - $tlen)
    $s0 &= '0'
    Next
    $tmp = $s0 & $tmp
    $ue = '0'
    Case 14
    $ue = '0'
    Case Else
    $ue = StringLeft($tmp, 1)
    EndSwitch
    $out = StringRight($tmp, 14) & $out
    $1 = StringTrimRight($1, 14)
    $2 = StringTrimRight($2, 14)
    WEnd
    Return ($1 + $2 + $ue) & $out
    EndFunc ;==>_BigInt_Add

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

    Func _BigInt_Mul(ByRef $1, ByRef $2)
    If $1 = '0' Or $2 = '0' Then Return '0'
    $l = StringLen($1)
    If $l < 8 Then
    Local $a1[1] = [$1]
    Else
    Local $a1[Floor($l / 7) + 1]
    For $i = 0 To UBound($a1) - 2
    $sZ = ''
    For $j = 1 To ($l - ($i + 1) * 7)
    $sZ &= '0'
    Next
    $a1[$i] = StringLeft($1, 7) & $sZ
    $1 = StringTrimLeft($1, 7)
    Next
    $a1[UBound($a1) - 1] = $1
    EndIf
    $l = StringLen($2)
    If $l < 8 Then
    Local $a2[1] = [$2]
    Else
    Local $a2[Floor($l / 7) + 1]
    For $i = 0 To UBound($a2) - 2
    $sZ = ''
    For $j = 1 To ($l - ($i + 1) * 7)
    $sZ &= '0'
    Next
    $a2[$i] = StringLeft($2, 7) & $sZ
    $2 = StringTrimLeft($2, 7)
    Next
    $a2[UBound($a2) - 1] = $2
    EndIf
    Local $sum = 0
    For $i = 0 To UBound($a1) - 1
    For $j = 0 To UBound($a2) - 1
    $x = (StringLeft($a1[$i], 7) * StringLeft($a2[$j], 7)) & StringTrimLeft($a1[$i], 7) & StringTrimLeft($a2[$j], 7)
    $sum = _BigInt_Add($sum, $x)
    Next
    Next
    Return $sum
    EndFunc ;==>_BigInt_Mul

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Hilfe, wie ändere ich die Größe einer Gui , wenn das Programm läuft

    • BugFix
    • 27. September 2008 um 20:10
    Zitat von Raupi

    $Form1 =

    Zitat von Raupi

    WinMove($Form

  • Hilfe, wie ändere ich die Größe einer Gui , wenn das Programm läuft

    • BugFix
    • 27. September 2008 um 19:58

    Schau dir WinMove() an. ;)

  • Installierte Software aus Registry auslesen (VBS -> AU3).

    • BugFix
    • 27. September 2008 um 19:56

    Du hast Fans ?! :huh: - Ich habe Schulden :wacko: :rofl:

  • Basis-Client für IRC-Chat

    • BugFix
    • 27. September 2008 um 18:14

    :D Nee, das geht ganz sicher nicht. Drum will ich ja mal schauen, was die DLL's so hergeben. ;)

  • .INI Datei verschlüsseln

    • BugFix
    • 27. September 2008 um 18:02

    OK, hier ein Beispiel:

    Spoiler anzeigen
    [autoit]

    #Include <String.au3>
    #include <Array.au3>

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

    Global $INI = @ScriptDir & '\Test.INI'

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

    ; ############## Verschlüsseln ########################
    $section = 'muster_section'
    $key1 = 'BlaBla'
    $val1 = '1234'
    $key2 = 'BlubBlub'
    $val2 = '99999'

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

    $pass = InputBox('Verschlüsseln', 'Bitte Passwort eingeben.')
    IniWriteSection($INI, _StringEncrypt(1, $section, $pass), _StringEncrypt(1, $key1, $pass) & '=' & _StringEncrypt(1, $val1, $pass) & @CRLF _
    & _StringEncrypt(1, $key2, $pass) & '=' & _StringEncrypt(1, $val2, $pass))

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

    ; ########################################################

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

    ; ############## Entschlüsseln ########################
    ; Sektionsnamen lesen
    $aSections = IniReadSectionNames($INI)
    Local $aSecKeys[1][2]

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

    ; Sektionsnamen entschlüsseln und Schlüssel-Wert-Paare auslesen
    For $i = 1 To UBound($aSections) -1
    If $aSecKeys[UBound($aSecKeys)-1][0] <> '' Then ReDim $aSecKeys[UBound($aSecKeys)+1][2]
    $aSecKeys[UBound($aSecKeys)-1][0] = _StringEncrypt(0, $aSections[$i], $pass) ; Sektionsname jetzt im Klartext
    $aSecKeys[UBound($aSecKeys)-1][1] = IniReadSection($INI, $aSections[$i]) ; 2D-Array mit noch verschlüsselten ""Key=Value"
    Next

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

    ; im Programm ist ja der entsprechende Sektionsname bekannt
    ; zugehörige Schlüssel-Wert-Paare als einzelnes Array selektieren
    Dim $zuLesendeSektion = 'muster_section'
    Dim $aKeyVal
    For $i = 0 To UBound($aSecKeys) -1
    If $aSecKeys[$i][0] = $zuLesendeSektion Then
    $aKeyVal = $aSecKeys[$i][1]
    ExitLoop
    EndIf
    Next

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

    ; Schlüssel-Wert-Paare entschlüsseln
    For $i = 1 To UBound($aKeyVal) -1
    $aKeyVal[$i][0] = _StringEncrypt(0, $aKeyVal[$i][0], $pass)
    $aKeyVal[$i][1] = _StringEncrypt(0, $aKeyVal[$i][1], $pass)
    Next

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

    _ArrayDisplay($aKeyVal, 'Schlüssel-Wert-Paare')

    [/autoit]
  • .INI Datei verschlüsseln

    • BugFix
    • 27. September 2008 um 16:15
    Zitat von Korby

    Mit StrinEncrypt könnte ich doch aber nur die zugehörigen Werte verschlüsseln und nicht die ganze .INI, oder sehe ich das falsch?

    Du könntest auch die gesamte Datei Ver-/Entschlüsseln. Dann mußt du die INI aber temporär speichern um sie dann "normal" zu lesen.

  • .INI Datei verschlüsseln

    • BugFix
    • 27. September 2008 um 15:55

    Die INI als Datei würde ich nicht verschlüsseln - sondern die eingetragenen Parameter (Sektionsnamen, Schlüssel, Werte).
    Du kannst vom User das Passwort zum Entschlüsseln beim Programmstart anfordern und damit die Daten aus der INI entschlüsseln.
    Wenn neue Daten in die INI geschrieben werden müssen machst du das wiederum durch Interaktion mit dem User.
    Natürlich könntest du auch das Paßwort im Skript hinterlegen - aber was nützt ein Tresor, wenn der Schlüssel daneben hängt? :D

  • Basis-Client für IRC-Chat

    • BugFix
    • 27. September 2008 um 15:32

    Hi sc4ry,
    ich kann dir zumindest schonmal sagen, dass SSL-Verschlüsselung möglich ist. Du benötigst dazu in jedem Fall eine zusätzliche DLL für den Verschlüsselungsdienst. Für mIRC habe ich etwas gefunden - ich werde jetzt mal testen, ob ich das aufbröseln kann und für den eigenen Client nutzen kann. Falls du selber rumprobieren möchtest - hier die Info: IRC mit SSL

  • AutoIt Window Tool: Position Umrandeter Felder ermitteln:

    • BugFix
    • 27. September 2008 um 15:21
    Zitat von Lenny

    Nur noch die Fensterleiste muss noch ab ;)

    Diese Maße kannst du hiermit: _GetSystemMetrics (kpl. in einem Aufruf) ermitteln.

  • Terme berechnen

    • BugFix
    • 27. September 2008 um 15:17
    Zitat von peethebee

    Sobald man Sachen wie 4/3 direkt berechnet, muss man einen Genauigkeitsverlust befürchten (bzw. hat ih faktisch). Eigentlich müsste man also Brüche verwalten und auch automatisch kürzen...

    peethebee

    "Dezimal" betrachtet stimme ich dir zu :D - aber wenn Brüche vorhanden sind, würde ich auch mit Brüchen rechnen und nur das Endergebnis dezimal ausgeben. Ich brauche ja bei der Betrachtung von Brüchen nicht nach sinnvollen Erweiterungen (also kgV / ggT) suchen. Schließlich brauch ich nicht von Hand rechnen. Also ist der gemeinsame Nenner einfach das Produkt der Nenner, Zähler entsprechend erweitern und fertig ;) . Sofern die Brüche nicht in Dimensionen liegen, die den Zahlenrahmen von AutoIt sprengen halte ich diesen Weg für praktikabel.

  • Terme berechnen

    • BugFix
    • 27. September 2008 um 10:17

    Hi,
    mal ein wenig Gedankengut von mir dazu :D.
    Das Problem bei der Berechnung von Aufgaben, deren Form (Rechenart) und Inhalt ich vorab nicht kenne, ist hauptsächlich die Berücksichtigung der Vorrangsregeln.
    Hier ist es sicher sinnvoll mit Taschenrechner-Logik zu arbeiten - d.h. nach jedem neu eingegebenen Element (Ziffer, Operator, Klammer) muß die Vorrangigkeit einzelner Operationen im Gesamtoperationsstring neu überprüft werden. Ob statt einer Ziffer auch eine Variable enthalten ist, ist für die Basis der Operation nebensächlich.
    Wenn die Basis steht kann ich auch rechnen und brauch nicht näherungsweise Ergebnisse vergleichen. (Natürlich sollte ich Divisionen durch Null abfangen ;) )
    Aber ist auf jedenfall ein interessantes Projekt. Vielleicht werde ich mich auch mal etwas darin vertiefen.
    Wünsche noch viel Erfolg.

  • GUICtrlCreateListViewItems verschachteln.

    • BugFix
    • 25. September 2008 um 13:13
    Zitat von Herra

    Habt Ihr Ideen zu Punkt 1 und 2?


    Ich weiß nicht, warum du für diese Konstruktion ein Listview verwenden möchtest. Das ist doch ganz klassisch ein TreeView. Damit kannst du dann all die gewünschten Einstellungen erzielen.

  • GUICtrlCreateListViewItems verschachteln.

    • BugFix
    • 24. September 2008 um 23:21
    Zitat von Herra

    Leider ist das nicht möglich. Ich benötige kein Array, sondern die Handles der einzelnen ListViewItems, damit ich sie anschließend auswerten kann.


    Und eben dazu verwendest du das Array. Du speicherst die ID's im Array statt in einzelnen Variablen.

  • Was die Langeweile alles erschaffen kann

    • BugFix
    • 23. September 2008 um 21:38

    sowas kriegen wir doch auch hin :D

    [autoit]

    If $bHunger Then
    $ret = _ModemSetState('Call', 'McDonalds')
    If $ret Then Send('Bestell-Liste' & 'Paypalkennung')
    $start = TimerInit()
    While Not 'Türglocke'
    Sleep(60*60*1000)
    If TimerDiff($start) > 10*60*60*1000 Then $FeelMe = 'Genervt'
    WEnd
    Run('auf_Essen_stürz')
    EndIf

    [/autoit]
  • Was die Langeweile alles erschaffen kann

    • BugFix
    • 23. September 2008 um 20:40

    Naja, was das unter Skripte zu suchen haben soll...
    Es hätte zumindest etwas Reiz, wenn es ein Einzeiler wär:

    [autoit]

    MsgBox(0, 'Ergebnis', InputBox('Eingabe', 'Zahl 1') + InputBox('Eingabe', 'Zahl 2'))

    [/autoit]

    Ich hoffe du hast Verständnis, dass ich das nach OT verschiebe.

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™