Naja aber es fuunzt, Herzlichen Dank
Dann vergiss nicht den grünen Haken für erledigt / gelöst zu setzen indem du den 1. Beitrag bearbeitest und den Threadstatus anpasst!
Naja aber es fuunzt, Herzlichen Dank
Dann vergiss nicht den grünen Haken für erledigt / gelöst zu setzen indem du den 1. Beitrag bearbeitest und den Threadstatus anpasst!
Wenn alles klappt dann kannst du ja den grünen Haken für erledigt / gelöst setzen indem du den Threadstatus im 1. Beitrag anpasst (bearbeiten).
Das ist nicht richtig. Auch _ArraySearch kann direkt eine StringInStr-Suche.
Ich kann um ehrlich zu sein mit der Array-UDF nichts anfangen und hab mich mit ihr auch nicht sonderlich beschäftigt.
Deshalb habe ich ja auch die Formulierung "standardmäßig" genommen und nicht das sie überhaupt nicht in der Lage wäre das zu tun.
Ich schreibe die nötigen Funktionen meistens selber um nicht extra bei den Array-Funktionen den 0. Index zu löschen, weil dort die Anzahl der Funde enthalten ist.
Das ist einfach nur lästig und überflüssig, wozu gibts denn UBound? Den Zwang unbedingt Arrays immer als Referenzen zu übergeben kann ich auch absolut nicht nachvollziehen.
ArraySearch funktioniert (standardmäßig) nur wenn man den gesamten String hat. Du kannst dir allerdings eine eigene Funktion zum Suchen basteln.
Local $aArray[5] = ["", """bundesland"":""NRW""", """name"":""Köln"""]
MsgBox(0,0,_ArraySearchSubString($aArray, """name"""))
Func _ArraySearchSubString($aArray, $sSubstring)
For $i = 0 To UBound($aArray) - 1
If StringInStr($aArray[$i], $sSubstring) Then Return $i
Next
Return -1
EndFunc
Alles anzeigen
@alpines Da warst du mal wieder schneller
Naja, du hast es halt mit der Excel-UDF gemacht. Ich dachte mir: Da wird eine csv schon reichen. Kommt ja letztlich eh aufs selbe hinaus.
Wenn dir eine einfache CSV-Tabelle reicht, dann kannst du das ganze so machen. Sollte deine Excel-Liste etwas hübscher aussehen kannst du ja auf die Excel-UDF zurückgreifen.
Das gibt dir von einem Ordner "read" die Artikelnummern aus und ignoriert doppelte.
Testdateien waren ("102156_A.Platine" "102156_A.Platine 2" "10036876+58" "10036876+58 222" und "10105223"). Test ist im Anhang.
#include <File.au3>
#include <Array.au3>
$aList = _FileListToArray(@ScriptDir & "\read")
_ArrayDelete($aList, 0)
For $i = 0 To UBound($aList) - 1
$aRegEx = StringRegExp($aList[$i], "(\d+)", 3)
If UBound($aRegEx) Then $aList[$i] = $aRegEx[0]
Next
$aList = _ArrayUnique($aList)
_ArrayDelete($aList, 0)
$hFile = FileOpen("table.csv", 1)
For $i = 0 To UBound($aList) - 1
FileWrite($hFile, $aList[$i] & ($i <> UBound($aList) - 1 ? ";" & @CRLF : ""))
Next
FileClose($hFile)
Alles anzeigen
Ob der Access Token explizit für API Calls da ist oder auch von Google so genutzt wird, weiß ich net. Ich werde das morgen oder übermorgen mal ausprobieren, das Mitschneiden und dann post ich hier das Ergebnis.
Wie gesagt, das Vorgehen ist eigentlich relativ simpel.
Du führst den Request mit dem Browser aus und schneidest alles mit. Dann lädst du die selben Ressourcen selber und suchst in den Ressourcen nach entsprechenden Form-Parametern, Token und anderem Zeugs das du für den Request benötigst. Der Browser zieht sie sich ja auch nicht aus den Fingern sondern hat sie auch von den Quelldateien.
So und da sind wir wieder bei dem Punkt, wo ich persönlich nicht weiter komm: Wie fordere ich aus meinem AutoIt-Skript das Access Token an, das man für die API braucht?
Na du guckst einfach mal nach was dein Browser alles so mitschickt.
Bei einem Login kannst du das alles nachverfolgen indem du den Login durchführst und mal die Parameter suchst, sie sind alle im Source vorhanden.
So sollte es auch bei deinem Problem sein. Du fordest ja eine Seite an und loggst dich auf ihr an. Da guckst du einfach mal was du brauchst und suchst im Source danach.
Sollte es nicht dort stehen kannst du ja schauen wie es andere implementiert haben oder du guckst dich nochmal in der Dokumentation der API um.
Vielen Dank AutoIter
@autoiter hast ganze Arbeit geleistet!
keine Ahnung hab, wie ich die URL's für die WinHttp-Funktionen bilden soll.
Du loggst dich mit deinem Browser ein und schneidest alle Requests mit die er abschickt. Diese bildest du nach indem du entsprechende Token anforderst und/oder aus den Quellcode parst.
Ich kenne die API nicht. Aber wenn ich Mails verschicken möchte, dann mache ich das über die entsprechenden Protokolle POP3/IMAP/SMTP.
Bei der API-Variante wirst du dich vermutlich mit OAuth2 authentifizieren müssen und das ist teilweise ziemlich mies.
Aber du kannst es ja trotzdem probieren und uns davon berichten.
Folgende WinHttp-Befehle solltest du dir mal ansehen.
_WinHttpOpen
_WinHttpConnect
_WinHttpSimpleRequest
_WinHttpSimpleSSLRequest
_WinHttpCloseHandle
Wobei ich mit AU3Info festgestellt habe, dass die Window Info Class immer gleich ist bei den Fenstern.
Das ist kein Problem. Mit WinList kannst du dir die Handles holen und jedes individuell ansprechen.
Enter sendest du dann am besten mit ControlSend direkt an das Fenster und nicht mit Send.
Die GUI wurde wohl mit Qt erstellt, da wirste nicht viel machen können. Hast du den Finder auf den Confirm-Button gezogne oder nur auf das Fenster?
Was willst du denn mit GMail machen? Wenn es um Mails verschicken / lesen geht dann solltest du auf keinen Fall WinHttp verwenden.
Solange du im Interface rumspielen und Einstellungen ändern willst ist das nocht völlig verständlich aber bei Mails würde ich lieber POP3/IMAP-UDFs nehmen.
Dazu gibts bereits UDFs bzw. Command Line Tools um das ganze zu bewerkstelligen.
Wenn du uns verrätst welches Programm du starten möchtest können wir das ganze eventuell besser lösen als einfach nur Enter zu senden.
Sollte ein anderes Fenster dazwischenkommen wirbelt das nämlich alles durcheinander.
Tasten senden bewerkstelligst du mit Send. Aber wie schon gesagt: Es ist nicht zu empfehlen.
Hier z.B. mal die Gutmann-Methode die schon etwas außer Mode ist. Dennoch ist die Erklärung in Wikipedia recht gut gelungen.
35x musst du natürlich eine Platte nicht löschen, normalerweise kriegt man nach einem mal eh nicht viel wieder zurück. 7x ist der Standard des DoD.
Nein, das reicht nicht aus.
Um ganz sicher zu gehen müsstest du die Datei mehrmals mit regulären Pattern und Zufallszahlen überschreiben um sicherzugehen, dass kein Anteil an Restmagnetismus der alten Daten bleibt.
Dazu gibts mehrere Arbeiten bzw. Anleitungen im Internet, lies dich einfach mal da durch.
Wenn du lesen möchtest was in der Konsole gepostet wurde, dann solltest du am Ende folgendes hinzufügen >> Dump.txt.
Leerzeichen vor dem >> beachten!
Das wird dir den Output der Konsole in die Datei Dump.txt schreiben. Diese sollte wiederum im Working Directory des Scriptes liegen, sofern du beim Run nichts weiteres angegeben hast.
Nichtsdestotrotz ist das Protokoll ein erforderlicher Bestandteil einer URL.
Da haben wir den Salat auch schon. Gefordert war ein Server-Name und keine URL.
Den Satz hätte ich etwas besser formulieren können, stimmt schon. Aber ich nehme an du weißt was ich gemeint habe.
Deiner Aussage nach dürfte ich dann auch kein https:// vor autoit.de schreiben.
Ein Browser ist aber heutzutage ein Programm das mit mehreren Protokollen arbeitet.
Du kannst ja im Browser auch ftp:// verwenden, aber du musst es nicht angeben, weil der Standard nun mal (im Browser zumindest) http/s ist.
Bei der SFTP-UDF hingegen gibt es nur ein einziges Protokoll und so ist der Hostname "sftp://x.x.x.x" schlicht falsch. Er kann nicht aufgelöst werden.
Richtig ist also, wie @alpines es bereits sagte:
... dann hätte ich mir die Tipperei auch sparen können ![]()
Du gibst als Parameter die Variablen nicht an sondern die Strings "$7, $x, $all, $de" du musst die Variablen aber übergeben.
Richtig wäre RunWait(@ComSpec & ' /c ' & $7 & ", " & $x & ", " & $all & ", " & $de, '', @SW_SHOW)