Poste bitte Dein gesamtes Script!
Dieses "rumgerate" bringt doch nichts...
Beiträge von Oscar
-
-
Wo ist Dein Script?
-
Eine andere Möglichkeit wäre das Scripting.Dictionary-Objekt zu verwenden:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <Array.au3>; Zufallswerte zum testen erstellen
[/autoit] [autoit][/autoit] [autoit]
$n = 10000;Random(50, 99, 1)
Dim $w[$n]
For $i = 0 To $n - 1
$w[$i] = Random(0, 9, 1)
Next
; Zufallswerte zum testen erstellen
_ArrayDisplay($w, $n & ' Zufallswerte zwischen 0 und 9') ; Zufallswerte anzeigen$aModal = _ArrayModal($w)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_ArrayDisplay($aModal, 'Häufigkeitsverteilung')Func _ArrayModal($w)
[/autoit]
Local Static $oDictionary = ObjCreate('Scripting.Dictionary')
$oDictionary.CompareMode = 1
For $i = 0 To UBound($w) - 1
If $oDictionary.Exists($w[$i]) Then
$oDictionary.Item($w[$i]) = $oDictionary.Item($w[$i]) + 1
Else
$oDictionary.Add($w[$i], 1)
EndIf
Next
Local $aOut[$oDictionary.Count][2], $i = 0, $colKeys
$colKeys = $oDictionary.Keys
For $strKey In $colKeys
$aOut[$i][0] = $strKey
$aOut[$i][1] = $oDictionary.Item($strKey)
$i += 1
Next
$oDictionary = ''
_ArraySort($aOut, 1, 0, 0, 1)
Return $aOut
EndFunc ;==>_ArrayModal -
Was erwartest Du?
Eine Fehlerbeschreibung wie diese: "Doch Mozrepl zickt bei jeder Möglichkeit rum" wird niemanden dazu anregen, darüber nachzudenken.
Poste ein nachvollziehbares Beispiel (mit URL) und gib genau an, wann welcher Fehler auftritt (nach Möglichkeit mit genauer Fehlermeldung).
Dann kann man Dir auch weiterhelfen. -
Sieht gut aus! Super gemacht!

-
Hallo Alina!
Alles Gute für das neue Lebensjahr!
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. -
Also Hochsicherheits-Anwendung sicher nicht. An den Daten hängen auch keine Menschenleben oder so. Es handelt sich "nur" um unsere Vogelbeobachtungsdaten.
Es wäre also "nur" ärgerlich, wenn die Daten verloren gingen, weil da dann eine Menge Arbeit hintersteckt.
Ach so ja, ich brauche ja eigentlich die Datei vorm speichern gar nicht umbenennen, da ich ja sowieso schon das Backup auf der zweiten Platte habe. Das sollte ja reichen.
Wie meinst Du das mit "Puffer auf die Platte" schreiben? Wird das beim FileClose nicht automatisch gemacht? Wenn nein, wie kann man das bewerkstelligen? -
Ich schreibe gerade an einem Programm für meine Freundin. Im Wesentlichen geht es dabei um das erfassen von Daten direkt in den PC (ohne "Papier-Backup").
Ein eventueller Datenverlust wäre also sehr ärgerlich, weil die Daten dann komplett verloren wären (das "Gedächtnis-Backup" ist in unserem Alter nicht mehr so zuverlässig
). Demzufolge will ich mein möglichstes tun, um die Datensicherheit zu gewährleisten.
Ein paar Stichpunkte, die ich mir als Ziel gesetzt habe:
- speichern der Daten, nachdem die alte Datei umbenannt wurde, um bei einem Absturz während des speichern wenigstens noch den alten Datenbestand zu haben.
- von den Daten eine Checksumme erstellen und ebenfalls mit abspeichern, um testen zu können, ob die Daten korrekt gespeichert wurden.
- nach dem speichern der Daten die Datei nochmal laden und mittels Checksumme mit den Daten im Speicher vergleichen (Verify).
- wenn das speichern erfolgreich war, noch ein Backup auf eine zweite Platte speichern (ebenfalls mit Verify).
- die Checksumme dient dann beim laden der Daten der Überprüfung ob die Daten noch korrekt vorliegen (um evtl. Fehler auf dem Datenträger ausschliessen zu können).
- falls sich bei der Überprüfung zeigt, dass die Daten fehlerhaft sind, dann Zugriff auf die umbenannte Datei bzw. auf das Backup der zweiten Platte.Die Fragen an euch sind nun:
- Haltet ihr das Konzept für ausreichend?
- Habe ich irgendwelche Denkfehler gemacht?
- Was sollte man evtl. noch bedenken? -
Danke, Xeno! Genau das war's!

-
Ich möchte, unten im Beispiel, die Comboboxen beim drücken der TAB-Taste überspringen. Es soll also direkt das nächste (TAB) bzw. das vorherige (SHIFT+TAB) Inputfeld den Focus erhalten.
Ich meine mich zu erinnern, dass es sowas wie ein NOTABSTOP als Style gab, aber jetzt, wo ich es brauche, finde ich das nicht mehr.
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>$hGui = GUICreate('Test', 640, 280)
[/autoit] [autoit][/autoit] [autoit]
$idGroup1 = GUICtrlCreateGroup('Gruppe1', 10, 10, 620, 80)
$idInput1 = GUICtrlCreateInput('', 20, 30, 590, 20, BitOR($ES_LEFT, $ES_AUTOHSCROLL, $ES_WANTRETURN))
$idCombo1 = GUICtrlCreateCombo('test1', 20, 52, 590, 20, BitOR($CBS_DROPDOWNLIST, $WS_VSCROLL))
GUICtrlCreateGroup('', -99, -99, 1, 1)
$idGroup2 = GUICtrlCreateGroup('Gruppe2', 10, 100, 620, 80)
$idInput2 = GUICtrlCreateInput('', 20, 120, 590, 20, BitOR($ES_LEFT, $ES_AUTOHSCROLL, $ES_WANTRETURN))
$idCombo2 = GUICtrlCreateCombo('test2', 20, 142, 590, 20, BitOR($CBS_DROPDOWNLIST, $WS_VSCROLL))
GUICtrlCreateGroup('', -99, -99, 1, 1)
$idGroup3 = GUICtrlCreateGroup('Gruppe3', 10, 190, 620, 80)
$idInput3 = GUICtrlCreateInput('', 20, 210, 590, 20, BitOR($ES_LEFT, $ES_AUTOHSCROLL, $ES_WANTRETURN))
$idCombo3 = GUICtrlCreateCombo('test3', 20, 232, 590, 20, BitOR($CBS_DROPDOWNLIST, $WS_VSCROLL))
GUICtrlCreateGroup('', -99, -99, 1, 1)GUISetState()
[/autoit]
Do
Until GUIGetMsg() = -3 -
Ich zitiere mal aus der Hilfe zu "_GUICtrlListView_InsertItem":
ZitatYou can not use this function to insert subitems. Use _GUICtrlListView_SetItemText to insert subitems.
Benutze einfach:
[autoit]GUICtrlCreateListViewItem($List[$i][0] & "|" & $List[$i][1], $FileList)
[/autoit] -
Das Problem ist doch: Jede Webseite ist anders aufgebaut. Manche arbeiten mit Frames, andere ohne, einige mit Javascript generierten Links, andere vielleicht mit relativen URLs.
Etwas universelles zu scripten dürfte sehr schwierig sein. Du müsstest schon die konkrete Seite nennen, damit man das darauf abstimmen kann. -
Ich würde den HTML-Quelltext lieber mit InetRead auslesen und mit StringRegExp auswerten.
So bekommst Du alle Links der Seite und dann die Links der Unterseiten:Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <Array.au3>
$sURL = "www.t-online.de"
$aLinks = _ReadLinks($sURL, $sURL)
_ArrayDisplay($aLinks)
For $i = 0 To 2 ; <- Test oder halt: UBound($aLinks) - 1
$aSubLinks = _ReadLinks($aLinks[$i], $sURL)
_ArrayDisplay($aSubLinks)
NextFunc _ReadLinks($sSubURL, $sURL)
[/autoit]
Local $sHTML = BinaryToString(InetRead('http://' & $sSubURL))
Local $aLinks = StringRegExp($sHTML, $sURL & '\S+?\.html', 3)
Return $aLinks
EndFunc
[autoit]
Wenn Dich der Inhalt der jeweiligen Seite interessiert, dann mit:BinaryToString(InetRead($sURL))
[/autoit]
auslesen. -
Für den Dateinamen ist _Crypt_HashData() zuständig. Und ja, Du bekommst dann zwei verschiedene Hashes.
-
Ja, und wo ist das Problem? Das Script funktioniert doch einwandfrei.
Es wird (bei mir) Firefox geöffnet und YouTube aufgerufen. Außer das YouTube meckert das die Gema das anzeigen verbietet (woran AutoIt nun wirklich nicht schuld ist
), ist doch alles gut.
Wenn das bei Dir nicht funktioniert, dann bitte Rückmeldung mit ordentlicher Fehlermeldung/-beschreibung. -
Oder willst Du Google mit einem, in Deiner GUI eingegebenen, Suchwort aufrufen?
[autoit]
Dann so:
[/autoit]
$search = 'AutoIt' ; <- GuiCtrlRead($Input1)
$link = 'http://www.google.de/search?q='
ShellExecute($link & $search) -
Es fehlt ein:
[autoit]
[/autoit]
fileclose($s_suchen)
nach dem WEnd.
Das Filehandle muss unbedingt geschlossen werden, ansonsten werden die ganzen (rekursiven) Filehandles nicht geschlossen und sind somit gelockt. -
die funktion "_FileFindAll($s_source, $a_data)" dient nur zur rekursiven dateinfindung
Zeig mal die Funktion "_FileFindAll". Vielleicht wird dort das FileHandle nicht ordnungsgemäß geschlossen?!
Gerade bei rekursiven Funktionen kann man schnell mal Fehler einbauen. -
Die Frage ist doch: Basiert das auf einer mathematischen Formel oder ist das willkürlich festgelegt. Wenn letzteres: Wo ist das festgelegt?
Gibt's da eine Datenbank mit: Kombination A ist Zahl B usw.? -
Und wie ist der Zusammenhang zwischen diesen ganzen Comboboxen und den Ergebniszahlen?
Du musst da schon konkreter werden. Die Kristallkugel ist gerade beim Polierer.