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

Beiträge von HansJ54

  • Name eines Arrays über eine Textvariable an _ArrayDisplay() übergeben

    • HansJ54
    • 15. Mai 2020 um 09:39

    Man wenn ich Euch nicht hätte. Auch danach habe ich gestern lange gesucht und nichts gefunden. :)

  • Excel Unterschied .xlsx und .csv

    • HansJ54
    • 15. Mai 2020 um 09:36

    Macht diese Zeile auch die "klammernden" Anführungszeichen weg, wenn welche da sind? Und Leerzeichen davor und dahinter?

    Wenn ich die Tiefen von RegEx mal verstehen würde;(

  • Name eines Arrays über eine Textvariable an _ArrayDisplay() übergeben

    • HansJ54
    • 15. Mai 2020 um 00:57

    _ArrayDisplay($sText) wobei $sText = "$aArray" der Name eines Arrays ist - geht das? Bzw. wie geht das?

  • Excel Unterschied .xlsx und .csv

    • HansJ54
    • 15. Mai 2020 um 00:52
    Zitat von water

    Wie erstellst Du die CSV-Datei? Verwendest Du Excel's "Speichern unter"?

    Ja, leider finde ich dort keine Einstellmöglichkeiten z.B. für den Delimiter (gibt es sicher).

    Zitat von Moombas

    Warum nicht so (reine Theorie, nicht getestet):

    Ungefähr, nur gibt es, wenn " oder ; im Text, noch "klammernde" Anführungsstriche zusätzlich, die beim Lesen aus der Excel-Tabelle nicht dabei sind.

    Zitat von water

    Ich verwende in allen Skripten die UDF von progandy um eine CSV zu lesen/schreiben: https://www.autoitscript.com/forum/topic/11…&comment=799820

    Wenn ich das gewusst hätte, hätte ich mir viel Zeit sparen können.

    AutoIt
    Func _CsvTrans($sString)
        ; doppelte "" ersetzen durch einen String, der sicher nicht vorkommt, hier !&=$/&%
        Local $sRes = StringStripWS(StringReplace($sString, '""', '!&=$/&%'), 3)  
        ; falls vorne und hinten " sind - entfernen
        If StringLeft($sRes, 1) = '"' And StringRight($sRes, 1) = '"' Then $sRes = StringMid($sRes, 2, StringLen($sRes) - 2)
        ; !&=$/&% durch " ersetzen
        Return = StringReplace($sRes, '!&=$/&%', '"')
    EndFunc
  • Excel Unterschied .xlsx und .csv

    • HansJ54
    • 14. Mai 2020 um 12:48

    Ich lese Daten wie z.B. XPathe aus einer Excel-Tabelle. Da nicht auf jedem Client Excel installiert ist, kopiere ich die Excel-Datei für diese in eine csv-Datei und lese dort aus der .csv .

    Hat anfänglich scheinbar funktioniert - nur mit "leichten" Störungen. :ironie:

    Befund: Die Fehler kamen nur bei kurzen XPathen. In der csv werden Anführungsstriche gedoppelt und dazu noch vor und hinter den String eingefügt:

    pasted-from-clipboard.png

    Fragen an die Spezialisten:

    1. kann ich das beim Schreiben der .csv verhindern?

    2. wenn nicht, wie in AutoIt damit umgehen?

    3. könnte es außer den Anführungsstrichen noch andere Unterschiede zwischen csv und xlsx geben? So werden sinnvollerweise Strings mit ";" auch in Anführungsstriche gesetzt.

    Was ist z.B. wenn in einem XPath ein ";" auftritt (gibt es das?). Da hätte ich übrigens Verständnis dafür, dass der String in Anführungsstriche gesetzt wird.

    Nachgedacht und getestet - vermutlich damit gelöst:

    1. beim Schreiben macht es keinen Sinn das zu verhindern

    2. Ich ersetze '""' durch '====' , dann führende und endende '"' durch '' und dann '====' durch '"'

    3. Gibt es eine automatische Funktion dafür in AutoIt?

    Dateien

    pasted-from-clipboard.png 10,73 kB – 0 Downloads
  • Ungenutzte Variablen ermitteln

    • HansJ54
    • 14. Mai 2020 um 09:05

    Ich bin nicht so fit in SciTE: wohin muss die GetUnusedVars.au3 kopiert werden und ist das so richtig in der SciTEUser.properties?

    pasted-from-clipboard.png

  • Excel.au3 _Excel_RangeRead maximale Textlänge?

    • HansJ54
    • 13. Mai 2020 um 10:43

    Jetzt habe ich es verstanden - konnte nur nicht glauben, dass es wirklich mit Transponieren zu tun hat - danke !

    Excel ist doof ?(

  • Excel.au3 _Excel_RangeRead maximale Textlänge?

    • HansJ54
    • 13. Mai 2020 um 08:41
    Zitat von water

    Warum $bForceFunc nicht immer auf True gesetzt ist? Aus Performance-Gründen. Die interne Excel-Methode Transpose ist natürlich schneller als eine AutoIt Funktion die Zeilen und Spalten vertauscht.

    Also: NIcht ganz einfach das Thema ;)

    Habe ich noch nicht ganz verstanden:

    hat also doch was mit Zeile/Spalte vertauschen zu tun? Ich will nur einlesen, nicht Transponieren.

    Mit $bForceFunc = True funktioniert es und da meine Tabelle nicht sehr groß ist, merkt man auch keine Verzögerung.

  • Excel.au3 _Excel_RangeRead maximale Textlänge?

    • HansJ54
    • 12. Mai 2020 um 23:05
    Zitat von water

    Auch im Helpfile findest Du die entsprechende Info:

    Function _Excel_RangeRead:

    The Excel transpose method doesn't support cells with more than 255 characters. Set $bForceFunc = True to bypass this limitation(s).

    Da hatte mich das "transpose" in die Irre geführt. Bei transpose dachte ich an Transponieren also Zeilen und Spalten vertauschen und das mache ich ja nicht. Aber ich versuche jetzt das mit dem $bForceFunc = True. Wenn ich lese "Wenn mehr als 65535 Zellen transponiert werden, dann wird $bForceFunc automatisch von der Funktion auf True gesetzt." dann frage ich mich, warum der Wert nicht immer auf True ist. Wird aber sicher irgendeinen anderen negativen Einfluss haben!?

    Zitat von autoiter

    Ich kenne _ReadExcel() auch nicht. Aber an dem Phänomen, bin ich auch schon kläglich gescheitert. :D

    _ReadExcel() = Funktion von mir, die _Excel_RangeRead() aufruft ^^

  • Excel.au3 _Excel_RangeRead maximale Textlänge?

    • HansJ54
    • 12. Mai 2020 um 17:01
    Zitat von Bitnugger

    Diese Funktion ist mir unbekannt und die gibt es auch nicht in der Excel.au3... du meinst wohl _Excel_RangeRead?

    Stimmt, das war meine eigene Funktion die _Excel_RangeRead aufgerufen hat :S

    Zitat von Bitnugger

    Und bevor du fragst:

    AutoIt3 Limits/defaults MAX_STRINGLEN 2,147,483,647 Maximum string length.

    AutoIt3 Limits/defaults hatte ich auch schon gefunden und gedacht, mit MAX_STRINGLEN 2,147,483,647 komme ich locker hin 8) Problem ist nur, dass in meiner Excel-Tabelle ein Eintrag mit 352 Zeichen war und _Excel_RangeRead abgestürzt ist - musste den Wert auf unter 256 kürzen (langen XPath durch kurzen ersetzt) . Daher mein Verdacht, dass beim Lesen von AutoIt aus Excel ein anderes Maximum gilt und daher die Frage, ob es irgendwo eine Liste gibt, die die Maxima für alle Funktionen bzw. zumindest Excel.au3 auflistet.

    Zitat von Musashi

    Etwas googlen könnte helfen ;), z.B. mittels Suchparameter Excel maximum cell length

    Erster Treffer : excel-specifications-and-limits

    Total number of characters that a cell can contain 32,767 characters

    Falsches Googlen ;) Suchte Maximum für "AutoIt holt Daten aus Excel." Hatte ja die Daten in Excel drin und Excel hat nicht gemeckert, nur _Excel_RangeRead klappte nicht. Beim Testen mit dem 352 langen String bekomme ich @error = 5. Wenn ich den String auf 256 Zeichen kürze, funktioniert es. Fehler in _Excel_RangeRead() ? Oder Gedankenfehler bei mir?

    AutoIt
        Local $oWorkbook = _Excel_BookOpen($oExcel, $sWorkbook)
        If @error Then Exit MsgBox($MB_SYSTEMMODAL, "$oWorkbook", "Error opening '" & $sWorkbook & "'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
        $aResult = _Excel_RangeRead($oWorkbook, $sETab , Default)
        If @error Then MsgBox($MB_SYSTEMMODAL, @ScriptLineNumber & " _Excel_RangeRead", "Error reading from workbook: " & $sWorkbook & " " & $sETab & @CRLF & "@error = " & @error & ", @extended = " & @extended)

    Falls es interessiert:

    /html/body/div/div[2]/div[1]/div/div/div/div/div/div/div/div/div/div/div/div/div/div/div[3]/div/div/div/div/div/div/div/div[2]/div/div/div/table/tbody/tr/td[2]/div/div/div/div/div/div/div/div/div/div/div[1]/div/div/div/div/div/div[2]/div/div/div/div/div/div/table/tbody/tr[2]/td/table/tbody/tr/td/div/form[1]/table[1]/tbody/tr[1]/td[2]/input

    Aber ich muss sagen: super Forum hier, Top Support ...

    Alles anzeigen
  • Excel.au3 _Excel_RangeRead maximale Textlänge?

    • HansJ54
    • 12. Mai 2020 um 09:59

    Ich finde nirgendwo eine Angabe, wie viele Zeichen eine Zelle in Excel haben darf. Bei 360 Zeichen steigt _ReadExcel() bei mir aus. Grundsätzlich: gibt es irgendwo eine Stelle, wo solche Maxima beschrieben sind?

  • Chrome: Meldung "Seiten wiederherstellen?" wegklicken

    • HansJ54
    • 11. Mai 2020 um 17:26

    Hat jemand eine Idee, wie ich die Meldung automatisch wegklicken kann? Vielleicht gibt es auch eine Einstellung in Chrome dazu?

    pasted-from-clipboard.png

    Und das "X" von "Chrome wird von automatisierter Testsoftware gesteuert" würde ich auch gerne klicken. Die Parameter für den Webdriver, damit es erst gar nicht kommt, habe ich getestet, damit schaffe ich es nicht - und wenn, dann sind andere Einstellungen damit verbunden, die ich nicht brauchen kann.

    pasted-from-clipboard.png

    Habe im Web etliche Lösungsvorschläge gefunden, (fast) alle funktionieren nicht außer wenn man im Profil vor jedem Start einen Wert umsetzt. Ich dachte hier eher an einen Klick auf das "X".

  • _ArrayExtract macht aus 1-dim Array ein 2-dim Array!?

    • HansJ54
    • 10. Mai 2020 um 00:55
    Zitat von Musashi

    Um noch mal auf _ArrayExtract zurückzukommen :

    Extrahiert man aus einem 2D-Array eine Spalte, dann erhält man ein 1D-Array. Extrahiert man aber eine Zeile, dann erhält man ein einzeiliges 2D-Array. Insofern ist die Ausgangsfrage von HansJ54 also berechtigt.

    Und das irritiert den Nicht-Profi natürlich ;)

    Gleich noch eine Mitternachtsfrage:

    Kann man die Breite der MsgBox vergrößern? Bricht meine Ausgaben, falls zu lang, immer um. Habe nichts dazu gefunden.

    Und die Schrift ist proportional in der MsgBox - kann man die umstellen?

  • _ArrayExtract macht aus 1-dim Array ein 2-dim Array!?

    • HansJ54
    • 9. Mai 2020 um 19:20
    Zitat von Bitnugger

    Bei StringStripWS reicht in dem Fall übrigens auch ein $STR_STRIPLEADING (1)...

    Stimmt, wenn es nur Leerzeichen sind kann man sie von vorne (oder von hinten) vernichten.

  • _ArrayExtract macht aus 1-dim Array ein 2-dim Array!?

    • HansJ54
    • 9. Mai 2020 um 16:54

    BugFix : Tolle Tutorials, hatte ich noch nicht gesehen.

    @Musashi: Perfekt, genau das was ich suche - vielen Dank!

  • _ArrayExtract macht aus 1-dim Array ein 2-dim Array!?

    • HansJ54
    • 9. Mai 2020 um 13:50
    Zitat von BugFix

    Was soll denn herauskommen? Und was hast du für Inhalte?

    Was macht_ArrayExtract ?

    "Extracts an array from the specified element(s) of a 1D or 2D array"

    D. h. wenn du Arrays im Array hast, werden diese extrahiert.

    Ich möchte die erste Zeile aus $aArray2Dim in $aArray1Dim kopieren und $aArray1Dim soll dabei ein eindimensionales Array bleiben.

    @Musashi:

    Danke für die schnelle Hilfe!

    Dein Script funktioniert, aber warum macht es einen Unterschied, ob da "UBound($aArray1Dim,$UBOUND_ROWS)-1" oder "0" steht? Der Ausdruck ist doch 0, aber mit 0 funktioniert es nicht!

    Und: ich brauche die erste Zeile, nicht die erste Spalte. Bekomme ich mit dem Script aber nicht hin. Irgendwie habe ich den Hintergrund wohl nicht verstanden. Könnte vorher ein

    _ArrayTranspose machen, aber es geht doch sicher auch mit $aArrayExtract?

    Und wenn wir gerade dabei sind und es Dir nichts ausmacht:

    Wie kann ich leere Einträge ( = " " oder = "" ) in der ersten Zeile von $Array2Dim rausfiltern, so dass $aArray1Dim nur nicht-leere Einträge enthält und auch Ubound entsprechend kleiner ist? Gibt es dafür auch eine einfache Methode? Kann ich mir mit _ArraySort vorstellen, aber geht's auch einfacher?

  • _ArrayExtract macht aus 1-dim Array ein 2-dim Array!?

    • HansJ54
    • 9. Mai 2020 um 12:48

    Es gibt sicher eine passende Funktion oder einen simplen Weg, aber nachdem ich jetzt 1 Std. gesucht habe frage ich lieber:

    Code
    #include <Array.au3>
    Local $aArray1Dim [20]
    Local $aArray2Dim [20] [10]
    $aArray1Dim = _ArrayExtract($aArray2Dim, 0, 0 , -1, -1)
    _ArrayDisplay($aArray1Dim, "Array1" & "  Dimension: " & UBound($aArray1Dim,$UBOUND_DIMENSIONS) & _
        " Rows: " & UBound($aArray1Dim,$UBOUND_ROWS) & " Columns: " & UBound($aArray1Dim,$UBOUND_COLUMNS))

    _ArrayExtract macht aus meinem 1-dimensionalen Array $aArray1Dim ein 2-dimensionales Array. Lässt sich das verhindern mal abgesehen von der Zuweisung durch eine For-Schleife?

  • Dokumentation von AU3-Scripten / Liste Variablen und Funktionen mit Zeilennummern

    • HansJ54
    • 5. Mai 2020 um 15:39

    Die Suche war das Problem - gefunden und vielen Dank! Wobei mir auch aufgefallen ist, dass bei SciTE mit Alt-L auch jetzt schon zumindest die Funktionen angezeigt werden und man kann sogar dorthin springen. Das Menü war einfach zu lang, nie nach unten geschaut ;)

  • Dokumentation von AU3-Scripten / Liste Variablen und Funktionen mit Zeilennummern

    • HansJ54
    • 5. Mai 2020 um 00:54

    Die Suche hier im Forum nach GetUnUsedVars.au3 bringt nur die heutigen Einträge. Wo muss ich suchen?

    Vielen Dank ;)

  • Dokumentation von AU3-Scripten / Liste Variablen und Funktionen mit Zeilennummern

    • HansJ54
    • 4. Mai 2020 um 16:35

    Ich habe lange nachgedacht, wie das, was ich suche, heißen könnte und wie ich danach suche - nichts gefunden. ;(

    Früher konnten die gängigen Compiler auf Wunsche die Source ausgeben und dahinter eine Liste der Unterprogramme und Variablen mit Angabe der Zeilen, in denen sie vorkommen. Das suche ich für meine AutoIt-Scripte. Da ich bisher nichts gefunden habe, habe ich ein kleines Programm für die Funktionen selbst geschrieben. Für die Variablen ist mir das aber zu aufwendig.

    Gibt es etwas dazu bei AutoIt?

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™