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

  • ini im Unterordner auslesen und Verarbeiten

    • BugFix
    • 29. September 2009 um 16:06

    Wie schon gesagt: Du mußt das Array von IniReadSection in einer EIGENEN SCHLEIFE auswerten, mit EIGENER ZÄHLVARIABLE.
    Und die RegExp-Auswertungen jetzt plötzlich auch als 2D-Array zu betrachten ist falsch.
    Ich könnte es jetzt ruckzuck korrigieren, aber das hilft dir nichts.
    Du mußt erst mal verstehen was dort abläuft.

  • Seiten zählen & dementsprechend Handeln

    • BugFix
    • 29. September 2009 um 15:36
    Zitat von Nighty

    Text: 3 of 3

    Hier hast du doch alles, was du willst: Text: 3 of 3
    Einfach die Datei laden, mit ControlGetText diesen Text ausgeben lassen. Was hinter 'of' steht ist deine Anzahl.

    Edit:
    So könntest du es machen:

    [autoit]

    Opt('WinTitleMatchMode', 2) ; somit wird das Fenster auch erkannt, wenn ein Teil des Titels angegeben wird
    $titel = 'Teil des Fenstertitels'
    $text = ControlGetText($titel, '', '[CLASS:Static; INSTANCE:1]')
    $anzahl = StringRegExpReplace($text, '(\d+\sof\s)(\d+)', '$2')

    [/autoit]
  • ini im Unterordner auslesen und Verarbeiten

    • BugFix
    • 29. September 2009 um 15:29

    Schau dir mal an WAS für ein Array IniReadSection zurückgibt.
    Was soll da dieses: $a[$i][$i] <== dort kann nur 0 (schlüssel) oder 1 (wert) verwendet werden.

  • ini im Unterordner auslesen und Verarbeiten

    • BugFix
    • 29. September 2009 um 15:17

    Ahja, diese Zeile (und alle die $a[$i] verwenden) ist falsch:

    [autoit]

    $date = StringRegExp($a[$i], '\d{2}\.\d{2}\.\d{4}', 1)

    [/autoit]


    Denn INIReadSection gibt ein 2D-Array zurück!

  • Seiten zählen & dementsprechend Handeln

    • BugFix
    • 29. September 2009 um 15:08
    Zitat von Nighty

    Wüsste auch nicht wie


    Weist du überhaupt, was ich meine?
    <Start> <Programme> <AutoIt v3> <AutoIt Window Info>

    Dieses Tool sollst du benutzen um Infos über dein Anwendungs-Fenster zu bekommen.

  • ini im Unterordner auslesen und Verarbeiten

    • BugFix
    • 29. September 2009 um 15:03

    Du bist heute lustig :D
    Fragst was du falsch machst, ohne zu sagen, was schiefläuft. ;)

    Ich vermute mal, du bekommst keine Ini's in dein Array?
    Der Aufruf ist nämlich falsch. Als Parameter mußt du nur die Erweiterung übergeben! Also: 'ini'

  • Icon in Statusbar

    • BugFix
    • 29. September 2009 um 14:59

    Du kannst auch die Größe für das Icon weglassen (0).

    [autoit]

    $hIcon = _WinAPI_LoadImage(0, 'Pfad_Icon', $IMAGE_ICON, 0, 0, $LR_LOADFROMFILE)

    [/autoit]

    Das Icon wird dann in der aktuellen Größe angezeigt.

  • Icon in Statusbar

    • BugFix
    • 29. September 2009 um 14:00

    Ein bischen Code wäre schon hilfreich.
    Wenn wir erst deine Arbeitsumgebung selbst erstellen müssen, um dein Problem nachzuvollziehen, geht uns glatt die Motivation flöten. ;)

    Aber du kannst das Icon mit: _WinAPI_LoadImage() laden, dann hast du ein Handle für deine Funktion.

  • Seiten zählen & dementsprechend Handeln

    • BugFix
    • 29. September 2009 um 13:56

    Versuche doch mal, ob das Windows-Info Tool dir im Text evtl. das markierte ausgibt:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
    Dann kannst du den Wert sofort verwenden.

    Bilder

    • toolis.png
      • 11,73 kB
      • 121 × 79
  • ini im Unterordner auslesen und Verarbeiten

    • BugFix
    • 29. September 2009 um 13:50

    Ist doch nur etwas Stringbastelei:

    [autoit]

    $a = 'c:\0rdner1=\\server\share\28.09.2009\ordner1'
    ;~ $a = 'c:\0rdner1=\\server\share\blub\28.09.2009\ordner1' ; auch längere Pfade möglich

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

    $date = StringRegExp($a, '\d{2}\.\d{2}\.\d{4}', 1)
    $date = $date[0] & '|'

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

    $local = StringLeft($a, StringInStr($a, '=')-1) & '|'

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

    $server = StringRegExp($a, '(\\\\\w+\\)(\w+\\)+', 2)
    $server = $server[0]

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

    $string = $date & $local & $server

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

    ConsoleWrite($string & @CRLF)

    [/autoit]
  • WinRar ähnliches Programm in AutoIt erstellen.

    • BugFix
    • 29. September 2009 um 13:21
    Zitat von syne


    kla darf man ein trennzeichen benutzen oda nich?!


    Es ist nicht zu empfehlen. Da es als Zeichen im Inhalt vorkommen kann, sollte man von Anfang an diese Fehlerquelle ausschließen. Header mit den Positionsdaten ist eine saubere Sache.

  • WinRar ähnliches Programm in AutoIt erstellen.

    • BugFix
    • 29. September 2009 um 12:01

    Von der Überlegung her, denke ich, dass du durchaus verschiedene Dateien 'zusammenklöppeln' kannst. Allerdings würde ich dieses:
    $binary & "|" & $binary2
    weglassen.
    Du mußt die Dateien, um sie ausführen zu können, sowieso wieder aus der Summendatei extrahieren. Also mußt du zusätzlich die Anfangs- und Endpositionen deiner integrierten Files in der Gesamtdatei abspeichern.
    Wie gesagt: ungetestet, nur gedacht. ;)

  • Dateien suchen und verändern

    • BugFix
    • 29. September 2009 um 11:52

    Rekursive Dateisuche ist das Stichwort. ;)

    Ich hab es mal so genmacht, dass die Namen Vornullen bekommen, dann ist der Dateiname gleich lang - sieht besser aus.
    So gehts:

    Spoiler anzeigen
    [autoit]

    Local $startPath = 'Dein Start-Pfad'
    Local $ZielPfad = 'Dein Pfad zum Abspeichern\' ; Backslash mit verwenden!
    Local $ext = 'jpg'

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

    Local $arJPGFiles = _GetFilesFolder_Rekursiv($startPath, $ext, 0)
    Local $len = StringLen(String($arJPGFiles[0]))
    Local $nul = ''
    If $len > 1 Then
    For $i = 1 To $len -1
    $nul &= '0'
    Next
    EndIf

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

    For $i = 1 To $arJPGFiles[0]
    FileMove($arJPGFiles[$i], $ZielPfad & StringRight($nul & $i, $len) & '.jpg')
    If @error Then
    MsgBox(262160,"ACHTUNG","Die Datei" & @CRLF & $arJPGFiles[$i] & @CRLF & _
    "konnte nicht verschoben werden, da eine Zieldatei mit dem Namen" & @CRLF & _
    $ZielPfad & StringRight($nul & $i, $len) & '.jpg' & @CRLF & "bereits existiert!")
    EndIf
    Next
    MsgBox(262176,"FERTIG","Verschieben und Umbenennen der Dateien beendet.")

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

    ;==================================================================================================
    ; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
    ; Description: Recursive listing of files and/or folders
    ; Parameter(s): $sPath Basicpath of listing ('.' -current path, '..' -parent path)
    ; $sExt Extension for file selection '*' or -1 for all (Default)
    ; $iDir -1 Files+Folder(Default), 0 only Files, 1 only Folder
    ; optional: $iRetType 0 for Array, 1 for String as Return
    ; optional: $sDelim Delimiter for string return
    ; 0 -@CRLF (Default) 1 -@CR 2 -@LF 3 -';' 4 -'|'
    ; Return Value(s): Array (Default) or string with found pathes of files and/or folder
    ; Array[0] includes count of found files/folder
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;==================================================================================================
    Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0')
    Global $oFSO = ObjCreate('Scripting.FileSystemObject')
    Global $strFiles = ''
    Switch $sDelim
    Case '1'
    $sDelim = @CR
    Case '2'
    $sDelim = @LF
    Case '3'
    $sDelim = ';'
    Case '4'
    $sDelim = '|'
    Case Else
    $sDelim = @CRLF
    EndSwitch
    If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
    If $sExt = -1 Then $sExt = '*'
    If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
    _ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim)
    If $iRetType = 0 Then
    Local $aOut
    $aOut = StringSplit(StringTrimRight($strFiles, StringLen($sDelim)), $sDelim, 1)
    If $aOut[1] = '' Then
    ReDim $aOut[1]
    $aOut[0] = 0
    EndIf
    Return $aOut
    Else
    Return StringTrimRight($strFiles, StringLen($sDelim))
    EndIf
    EndFunc

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

    Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF)
    If Not IsDeclared("strFiles") Then Global $strFiles = ''
    If ($Dir = -1) Or ($Dir = 0) Then
    For $file In $Folder.Files
    If $Ext <> '*' Then
    If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
    $strFiles &= $file.Path & $Delim
    Else
    $strFiles &= $file.Path & $Delim
    EndIf
    Next
    EndIf
    For $Subfolder In $Folder.SubFolders
    If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
    _ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
    Next
    EndFunc

    [/autoit]
  • $LVM_SETCOLUMNWIDTH

    • BugFix
    • 29. September 2009 um 10:58

    Verwende für die Breite der letzten Spalte

    [autoit]

    $LVSCW_AUTOSIZE_USEHEADER

    [/autoit]


    dann wird diese automatisch angepaßt.

  • Script verurscht hin und wieder Fehler im Clipboard

    • BugFix
    • 29. September 2009 um 00:01

    Warum verwendest du diesen umständlichen Code?
    Ich hatte dir doch ein viel einfacheres Bsp. gepostet: [ offen ] Markierter Text direkt in Excel...

    Übrigens:
    Acrobat Reader ist ein ressourcenfressendes Monster. :D
    Verwende doch FoxIt Reader, der ist klein und schnell.

  • Digitaluhr

    • BugFix
    • 28. September 2009 um 23:57

    @nicric: Schau mal in dein BIOS, was dort für eine Zeit geführt wird. Evtl. Problem mit Sommerzeit?

  • aus switch "rausspringen"

    • BugFix
    • 28. September 2009 um 23:32

    ContinueCase ist aber der falsche Weg!
    Du wirst es merken, wenn weitere Cases dadrunter stehen.

    ContinueCase bedeutet: Setze mit nächstem Case fort und nimm an dieser Case ist wahr.
    Heißt: der Code vom nächsten Case wird ausgeführt.

  • Anwendertreffen?

    • BugFix
    • 28. September 2009 um 20:51

    Wir machen mit unserer Familie jährlich ein Treffen. Und das ist schon haarig so etwas übereinstimmend zu organisieren, dass jeder zufrieden ist. Und wir sind nur 26 Leute.
    Insofern wage ich mal zu behaupten, dass es an eine Sysiphosarbeit grenzt, so etwas für eine große Anzahl von Menschen zu managen. (Falls überhaupt Gemeinsamkeit zu erreichen ist)

    Und mal noch ein anderer Aspekt:
    Hat jemand von euch schon mal ein Blind Date gehabt? Bzw. habt ihr euch mal mit jemandem getroffen, den ihr vorher lange Zeit 'kanntet' vom Chat her?
    In 90% der Fälle werdet ihr überrascht sein - aber unangenehm. Dies hat weniger mit eurem Gegenüber zu tun, sondern mehr mit dem Bild, das ihr euch von ihm selbst erstellt habt.
    Also ich weiß nicht, ob es unbedingt erstrebenswert ist, sich im RL zu sehen. Hier im Forum definieren wir uns in erster Linie über unser gemeinsames Interesse an AutoIt und die Fähigkeiten, die wir darin erworben haben. Aber wir sind ja auch Menschen mit Macken und Fehlern - und ob die wem anders gefallen..? :rolleyes:

  • _DayIntervalToDateArray & @Hour & @min

    • BugFix
    • 28. September 2009 um 20:22
    Zitat von Andy

    Diese Methode ist nur dann effektiv, wenn du damit irgendetwas einsparen kannst, Speicherplatz, Zeit usw.
    Aber nur "weil es geht" einen lesbaren Ausdruck in etwas (auf Anhieb) unleserliches zu verwandeln um es danach wieder in lesbare Daten zu transferieren ist suboptimal.

    Ja Andy, so ist es. Und da in diesem Kontext etliche Abfragen, die Zeit verbraten, eingespart werden, ist es hierfür durchaus sinnvoll.
    Dass weniger Code zu schreiben ist, ist ein angenehmer Nebeneffekt.
    Auch wenn die Einsparungen sicher nicht von Belang sind, erachte ich es als sinnvoll sich rechtzeitig Optimierungsmöglichkeiten zu erschließen. Bei größeren Skripten hat man dann tatsächlich einen Benefit.

  • Markierter Text direkt in Excel...

    • BugFix
    • 28. September 2009 um 11:23

    Das ist alles viel zu kompliziert. ;)
    Wenn du Excel bereits offen hast und die erste zu beschreibende Zelle markiert ist, starte einfach folgendes Skript.
    Wechsele dann in dein PDF-Dokument (egal ob mit dem lahmen Acrobat Reader oder was vernünftigem :D ), markiere den zu übertragenen Text und mit STRG+ALT+C wird alles ohne Zeilenumbrüche in Excel eingefügt. Dann wird in Excel auf die nächste Zeile gewechselt. Dabei bleibt Excel selbstverständlich im Hintergrund. Du kannst also bequem, ohne dein PDF-Dokument zu verlassen, beliebig viele Passagen so an Excel übergeben.
    Bist du fertig, beendest du das Skript mit STRG+ALT+E und speicherst dein Excel. (auch das läßt sich bei Bedarf gleich noch per Skript ausführen ;) )

    [autoit]

    HotKeySet('^!c', '_ClipToExcel') ; Strg + Alt + c ==> Text im PDF kopieren und dann in Excel einfügen
    HotKeySet('^!e', 'ende') ; Strg + Alt + e ==> Ende
    Global $oExcel = ObjGet("", "Excel.Application")

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

    While True
    Sleep(100)
    WEnd

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

    Func _ClipToExcel()
    Send('^c')
    $oExcel.ActiveCell.Value = StringRegExpReplace(ClipGet(), @CRLF, ' ')
    $oExcel.ActiveCell.Offset(1, 0).Select
    EndFunc

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

    Func ende()
    Exit
    EndFunc

    [/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™