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

  • Explorer COM-Schnittstelle?

    • BugFix
    • 21. Juni 2013 um 09:29

    Ja, das gibt es.
    Hier mal eine Funktion, die ich erstellt habe um markierte Dateien im Explorer abzufragen. Weitere Methoden zum Objekt "Shell.Application" kannst du bei MSDN abfragen.

    Spoiler anzeigen
    [autoit]

    ;===============================================================================
    ; Function Name....: _ActiveExplorer_GetFilesSelected
    ; Description......: Erstellt ein Array mit
    ; - Anzahl der markierten Dateien
    ; - dem Pfad des aktiven Explorerfensters und
    ; - dem/den Pfad/en der markiert/en Datei/en
    ; Parameter(s).....: keine
    ; Requirement(s)...: offenes Explorerfenster
    ; Return Value(s)..: Array mit den Daten, $a[0] = Anzahl, $a[1] = Ordnerpfad, $a[2..] = Dateiname
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _ActiveExplorer_GetFilesSelected()
    Local $oShell = ObjCreate("Shell.Application")
    Local $oExplorer, $sPath, $oFolderView, $iCount = 0, $sSelectedFiles = '', $n = 2
    For $i = 0 To $oShell.Windows.Count - 1
    $oExplorer = $oShell.Windows($i)
    $sPath = StringReplace(StringReplace(StringTrimLeft($oExplorer.LocationURL, 8), '%20', ' '), '/', '\')
    If WinGetTitle('[ACTIVE]') = $sPath Then ExitLoop
    Next
    $oFolderView = $oExplorer.Document.SelectedItems()
    $iCount = $oFolderView.Count
    Local $aOut[$iCount +2]
    $aOut[0] = $iCount
    $aOut[1] = $sPath
    If $iCount = 0 Then
    ReDim $aOut[3]
    $aOut[2] = 'NO FILE SELECT'
    Else
    For $oFolderItem In $oFolderView
    $aOut[$n] = $oFolderItem.Name
    $n += 1
    Next
    EndIf
    Return $aOut
    EndFunc ; ==>_ActiveExplorer_GetFilesSelected

    [/autoit]
  • Tool zur Dateisuche mit einer Exceldatei als Suchmatrix

    • BugFix
    • 20. Juni 2013 um 09:04

    Probleme treten seltener in der Syntax als in der Logik auf -- so auch bei dir. ;)
    Wenn du mehrere Ordner durchsuchen willst, mußt du die Folgeoperationen auch für jeden dieser Ordner aufrufen.
    - Liste Ordner in einem Stammordner abfragen
    - $sMSN = Suchbegriff (gilt für alle Ordner)
    - für jeden dieser Ordner ausführen:
    -- $sSheet = Ordnername
    -- $_sPathXLS = Stammordner & '\' & Ordnername
    -- _GetToWrite() (s. Spoiler) aufrufen, gibt String zum Schreiben in Datei oder Leerstring zurück (Wenn kein Leerstring, kann danach die Schleife abgebrochen werden

    Spoiler anzeigen
    [autoit]

    Func _GetToWrite($_sPathXLS, $_sSheet, $_sMSN)
    Local $aFromMSN = _GetListFromMSN($_sPathXLS, $_sSheet, $_sMSN)
    If Not IsArray($aFromMSN) Then Return ''
    Local $sFolder = "_STAMM-ORDNER__&_\_&_$_sSheet" ; ### Anpassen ###
    Local $aNewFiles = _GetFileListNewest($sFolder)
    Local $sToWrite = ''

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

    For $i = 0 To UBound($aFromMSN) -1 ; kann etwas dauern, da jedes MSN-Ergebnis mit jeder neuesten Datei verglichen wird
    $sFileRoot = StringRegExpReplace($aFromMSN[$i], '(\w\d{3})(\d{5})(\d{3})', '$1_$2_$3')
    For $j = 1 To $aNewFiles[0]
    If StringLeft($aNewFiles[$j], 14) = $sFileRoot Then $sToWrite &= $aNewFiles[$j] & @CRLF
    Next
    Next
    Return $sToWrite
    EndFunc

    [/autoit]


    Mußt du aber mal selber schauen, ob das mit den Pfaden jetzt so paßt. Hab hier keine Möglichkeit zu testen, daher nur quick&dirty. Etwas soll ja noch für dich übrig bleiben. :D

  • Lua - Inline

    • BugFix
    • 17. Juni 2013 um 13:18

    Beim Versuch Bibliotheken mittels "require" einzubinden ist mir aufgefallen, dass dort keine durchgehende Kompatibilität existiert. Mit der hier integrierten lua51.dll konnte ich bisher nur die "lfs.dll" laden. "iup" oder "luacom" werden zwar erkannt, aber der Prozedureinsprungpunkt paßt nicht.
    Im Moment habe ich nur eine Edge-Modem Verbindung und kann mir somit kaum was aus dem Netz saugen. Sowie das wieder besser ist, werde ich mal schauen, dass ich eine Lua-Version mit vielen passenden Bibliotheken finde.

  • Treeview - $NM_CLICK hängt nach

    • BugFix
    • 17. Juni 2013 um 12:58
    Zitat

    Und wie bereits erwähnt, wäre es mir neu, wenn ich in einer Treeview mit GUICtrlOnEvent arbeiten kann. Ich erstelle die dynamisch und kann somit doch nicht feststellen welches ich geklickt habe ...

    Nun, da kann dein Horizont erweitert werden ;) -- Dynamisch und OnEvent, warum soll sich das beißen?

    Spoiler anzeigen
    [autoit]

    #include <GuiTreeView.au3>
    #include <File.au3>
    Opt('GUIOnEventMode', 1)

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

    $gui = GUICreate('Test')
    GUISetOnEvent(-3, '_ende')
    $cTV = GUICtrlCreateTreeView(10, 10, 300, 4000)
    $A = GUICtrlCreateTreeViewItem('C:\', $cTV)
    GUICtrlSetOnEvent(-1, '_clickTree')
    Global $aFolder = _FileListToArray('C:\', '*', 2)
    For $i = 1 To $aFolder[0]
    GUICtrlCreateTreeViewItem($aFolder[$i], $A)
    GUICtrlSetOnEvent(-1, '_clickTree')
    Next

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

    GUISetState()

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

    While True
    Sleep(50)
    WEnd

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

    Func _ende()
    Exit
    EndFunc

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

    Func _clickTree()
    $iItem = GUICtrlRead($cTV)
    If $iItem = 0 Then Return
    ConsoleWrite(GUICtrlRead($iItem, 1) & @LF)
    EndFunc

    [/autoit]
  • Tool zur Dateisuche mit einer Exceldatei als Suchmatrix

    • BugFix
    • 17. Juni 2013 um 11:51
    Zitat von ElmarFudd

    Also haben ganzen die Excel-Sachen (Objekte und Methoden) in AutoIt die gleiche Bedeutung wie im VBA?

    Grundsätzlich ja, diese werden ja durch das genutzte Objekt (hier: "Excel.Application") vorgegeben. AutoIt selbst ist nicht Objekt-orientiert. Allerdings ist die Anzahl der Objekte, auf die AutoIt referenzieren kann, begrenzt. Aber die MS-Office Applicationen sind anwendbar.
    Ein wichtiger Punkt bei Parametern in Methoden: In VBA kannst du Parameter weglassen, da die Übergabe mit "Parametername=Wert" erfolgt. Das ist in AutoIt nicht möglich. Es müssen immer alle Parameter übergeben werden, sofern sie nicht optional sind bzw. ein Parameter folgt dessen Wert nicht als Standard übergeben werden soll. Für die Standardwerte übergibst du dann das Schlüsselwort "Default".

  • Tool zur Dateisuche mit einer Exceldatei als Suchmatrix

    • BugFix
    • 17. Juni 2013 um 09:54
    Zitat von ElmarFudd

    Hier verstehe ich leider nicht ganz wo Du das $-Zeichen ersetzt?

    $CellMSN = StringReplace($oCell.Address, '$', '')
    $oCell ist die Referenz auf die Zelle und mit
    $oCell.Address hole ich mir die Adresse als Spalten/Zeilen-Bezug. Da die Zelle einen absoluten Bezug darstellt, wird dieser angegeben mit "$spalte$zeile" ;)

    Zitat von ElmarFudd

    Kann man das so schreiben der er z.B. nur "7" oder "9" findet?

    Das Problem bei einer insensitiven Suche wäre aber, dass z.B. die Suche nach "MSN1" auf "MSN10" zutreffen würde, wenn kein "MSN1" vorhanden ist. Wenn du derartiges ausschließen kannst ändere Zeile 40:

    [autoit]


    ; statt
    If $oCell.Value == $_sMSN Then
    ; verwende
    If StringInStr( $oCell.Value, $_sMSN ) Then
    ; für $_sMSN dann nur die Ziffer übergeben

    [/autoit]
  • Lua - Inline

    • BugFix
    • 16. Juni 2013 um 18:08

    Im EN-Forum hatte ich diesen Beitrag zur Anwendung von Lua-Code innerhalb von AutoIt gefunden.
    Darauf basierend habe ich einige weitere Funktionen hinzugefügt und einen komfortableren Aufruf gestaltet. Zusammengefasst in der "LuaInline.au3"

    Grundsätzlich sind damit alle Möglichkeiten von Lua auch in AutoIt nutzbar. Vor allem kann man die unzähligen Bibliotheken einbinden (was in dem kastrierten Lua in SciTE leider nur z.T. geht).
    Tobt euch aus und habt Spaß :thumbup:

    Code
    Zur Anwendung benötigt ihr:
      	• _Lua_StartUp()
      und:
    	• _Lua_DoString()       Führt einen String mit Lua-Code aus, (kein Return möglich)               oder _
      	• _Lua_RunFuncLocal()   Erstellt eine Funktion zur Laufzeit und führt sie aus, (Return möglich)  oder _
    	• _Lua_RunFuncFile()    Führt eine bestehende Funktion aus einer Lua-Datei aus, (Return möglich)
      Die weiteren Funktionen werden intern genutzt. Um Push und Pop braucht ihr euch nicht kümmern.
    Bsp.
    [autoit]

    #include "LuaInline.au3"

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

    _Lua_StartUp() ; == Initialisiert Lua, Shutdown automatisch bei AutoIt-Ende

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

    ;---------------------------------------------------------------------------------------------------
    ; == Bsp.: _Lua_DoString()
    ; == String mit Lua-Code wird geladen und ausgeführt, kein Returnwert möglich
    Local $sStrRun = _
    "local datetable = os.date(""*t"", os.time()) " & _
    "print(string.format('%02d:%02d:%02d', datetable.hour, " & _
    "datetable.min, " & _
    "datetable.sec), 'Hallo Welt!') " & _
    "io.flush()"

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

    ; == Parameter: • String mit Lua-Code
    _Lua_DoString($sStrRun)
    ;---------------------------------------------------------------------------------------------------

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

    ;---------------------------------------------------------------------------------------------------
    ; == Bsp.: _Lua_RunFuncLocal()
    ; == String mit Code einer Funktion wird in eine temporäre Datei geschrieben und geladen,
    ; == Parameter (sofern vorhanden) werden als Array übergeben,
    ; == wenn Returnwerte: für jeden Returnwert den Datentyp angeben ("num", "str", "bool") in Kommagetrenntem String.
    ; == Mehrere Returnwerte werden als Array zurückgegeben
    ; == Nach Aufruf wird die Datei sofort gelöscht
    Local $sFunc = _
    "function StringBetweenBalanced(_s, _left, _right) " & _
    "local match = _s:match('(%b'.._left.._right..')') " & _
    "if match then return match:sub(2, #match -1) " & _
    "else return '' end end"
    Local $sText = _
    "Das ist ein Text (hier ist ein Ausdruck in Klammern (der wiederum einen Ausdruck in Klammern enthält), " & _
    "alles zwischen den äußeren Klammern ist der Match) -- das hier nicht mehr."
    Local $aP[3] = [$sText, '(', ')']

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

    ; == Parameter: • String mit der Funktion, • Funktionsname, • Parameterarray, • Return-Typ
    Local $Ret = _Lua_RunFuncLocal($sFunc, 'StringBetweenBalanced', $aP, 'str')
    ConsoleWrite("@@ Debug line" & @TAB & @ScriptLineNumber & " var: $Ret --> " & $Ret & @LF)

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

    ; == Funktion ohne Parameterübergabe
    $sFunc = "function Random() return math.random() end"
    $Ret = _Lua_RunFuncLocal($sFunc, 'Random', '', 'num')
    ConsoleWrite("@@ Debug line" & @TAB & @ScriptLineNumber & " var: $Ret --> " & $Ret & @LF)
    ;---------------------------------------------------------------------------------------------------

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

    ;---------------------------------------------------------------------------------------------------
    ; == Bsp.: _Lua_RunFuncFile()
    ; == Die übergebene Datei wird geladen, Parameter (sofern vorhanden) werden als Array übergeben,
    ; == wenn Returnwerte: für jeden Returnwert den Datentyp angeben ("num", "str", "bool") in Kommagetrenntem String.
    ; == Mehrere Returnwerte werden als Array zurückgegeben
    Local $aP[2] = [20, 5]
    ; == Parameter: • Lua-Datei, • Funktionsname aus dieser Datei, • Parameterarray, • Return-Typ
    ; == Um die Lua-Testdatei zu nutzen: Wenn nicht im selben Ordner, wie diese Datei, den exakten Pfad angeben.
    $Ret = _Lua_RunFuncFile('LuaInlineTest.lua', 'mul_div', $aP, 'num,num,str') ; Multiplikation/Division/Text
    For $i = 0 To UBound($Ret) -1
    ConsoleWrite("@@ Debug line" & @TAB & @ScriptLineNumber & " var: $Ret[" & $i & "] --> " & $Ret[$i] & @LF)
    Next
    ;---------------------------------------------------------------------------------------------------

    [/autoit]

    Dateien

    LuaInline.zip 94,75 kB – 298 Downloads
  • klicken eines Objects mit IE.au3

    • BugFix
    • 15. Juni 2013 um 20:39

    Da die AGB des Seitenbetreibers eine Automatisierung nicht untersagen, schalte ich den Beitrag frei.

  • Autoit Programm verkaufen?

    • BugFix
    • 15. Juni 2013 um 17:57

    Das Anmelden eines Gewerbes ist für eine einmalige oder gelegentliche Erstellung einer Software nicht in jedem Fall erforderlich. Ein wesentliche Faktor ist die Umsatzhöhe pro Jahr. Bei Umsätzen unter einem Limit (34 TE wenn ich mich recht erinnere) ist es auch möglich Rechnungen nach §19 UStG (Brutto für Netto) zu erstellen.
    Eine einmalige Auftragsarbeit bedingt nicht zwingend eine Einstufung als gewerbliche Tätigkeit. Wenn man steuerpflichtig ist, sind diese zusätzlichen Einnahmen natürlich in der ESt-Erklärung zu berücksichtigen.

    Gesendet von meinem GT-I9001 mit Tapatalk 2

  • RGB to HSV (nach der Formel von Wikipedia)

    • BugFix
    • 15. Juni 2013 um 17:18

    Verwende bitte die Suche, ich habe dazu bereits Konvertierungsfunktionen gepostet.

    Edit: Habe es mal rausgesucht
    https://autoit.de/index.php?page…6614#post126614

    Gesendet von meinem GT-I9001 mit Tapatalk 2

  • Excel: SpaltenNummer zu Buchstaben und umgekehrt

    • BugFix
    • 15. Juni 2013 um 15:15

    Ich verwende das etwas anders. Im Allgemeinen arbeite ich mit Schleifen und bevorzuge daher als Adressierungsmethode ausgehend von einer Zelle die Offset-Methode. Dadurch erhalte ich einen Zahlenwert von Spalten, die ich durchlaufen habe. Für Folgeoperationen hole ich mir mit der Konvertierung dann den/die Spaltenbuchstaben. Natürlich wäre auch möglich: - Range auf letzte Zelle, - .Address, - Konvertierung, - Spaltenbuchstaben selektieren. Aber da ist mein einer Schritt mit der Funktion effektiver als diese 4 Schritte. ;)

  • Excel: SpaltenNummer zu Buchstaben und umgekehrt

    • BugFix
    • 15. Juni 2013 um 14:32

    Ich hatte das mal in einem Hilfebeitrag gepostet, allerdings nur für den Adressbereich vor Office 2007.
    Diese Funktionen berücksichtigen nun beim Konvertieren den erweiterten Adressbereich:

    [autoit]

    ; === Spaltenadresse zu Nummer
    Func _LetterToColNr($_sLetter)
    $_sLetter = StringUpper($_sLetter)
    Local $iNum, $a = StringSplit($_sLetter, '')
    Switch $a[0]
    Case 3
    $iNum = (Asc($a[1]) -64) *26 *26
    $iNum += (Asc($a[2]) -64) *26
    $iNum += (Asc($a[3]) -64)
    Case 2
    $iNum = (Asc($a[1]) -64) *26
    $iNum += (Asc($a[2]) -64)
    Case 1
    $iNum = Asc($a[1]) -64
    EndSwitch
    Return $iNum
    EndFunc

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

    ; === Spaltennummer zu Adresse
    Func _ColNrToLetter($_iColNr)
    Local $s1 = '', $s2 = '', $s3 = '', $i
    $i = Int($_iColNr /(26*26))
    If $i <> 0 Then
    $s1 = Chr(64 +$i)
    $_iColNr = Mod($_iColNr, 26*26)
    EndIf
    $i = Int($_iColNr /26)
    If $i <> 0 Then
    $s2 = Chr(64 +$i)
    $_iColNr = Mod($_iColNr, 26)
    EndIf
    $s3 = Chr(64 +$_iColNr)
    Return $s1 & $s2 & $s3
    EndFunc

    [/autoit]
  • Tool zur Dateisuche mit einer Exceldatei als Suchmatrix

    • BugFix
    • 15. Juni 2013 um 00:38

    Unter Berücksichtung der korrekten Zuordnung MSN <--> Daten sollte dieses Skript den Anforderungen gerecht werden. Wie du siehst, minimiere ich den Vergleichsaufwand etwas, indem ich aus den nc-Dateien vorher nur die mit den höchsten Buchstaben im Namen extrahiere.

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <Array.au3>

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

    $sFolder = 'Ordner_nc_Dateien'
    $sPathXLS = "Pfad_zur_XLS"
    $sSheet = 'S15'
    $sMSN = 'MSN9'

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

    $aFromMSN = _GetListFromMSN($sPathXLS, $sSheet, $sMSN)
    $aNewFiles = _GetFileListNewest($sFolder)
    $sToWrite = ''

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

    For $i = 0 To UBound($aFromMSN) -1 ; kann etwas dauern, da jedes MSN-Ergebnis mit jeder neuesten Datei verglichen wird
    $sFileRoot = StringRegExpReplace($aFromMSN[$i], '(\w\d{3})(\d{5})(\d{3})', '$1_$2_$3')
    For $j = 1 To $aNewFiles[0]
    If StringLeft($aNewFiles[$j], 14) = $sFileRoot Then $sToWrite &= $aNewFiles[$j] & @CRLF
    Next
    Next
    ;~ FileWrite('Datei', $sToWrite)
    ConsoleWrite($sToWrite & @LF)

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

    Func _GetListFromMSN($_sPathXLS, $_sSheet, $_sMSN)
    Local $fOpen = True, $oExcel = ObjGet($_sPathXLS)
    If @error Then
    $oExcel = ObjCreate("Excel.Application")
    $oExcel.Visible = 0
    $oExcel.Workbooks.Open($_sPathXLS)
    $fOpen = False
    EndIf
    Local $oSheet = $oExcel.Sheets($_sSheet)
    ; === letzte Zeile
    Local $iRows = $oExcel.Worksheets($_sSheet).UsedRange.Rows.Count
    ; == letzte Spalte
    Local $iColumns = $oExcel.Worksheets($_sSheet).UsedRange.Columns.Count
    ; == MSN suchen
    Local $oCell, $iVal, $CellMSN = ''
    For $i = 0 To $iColumns -1
    $oCell = $oSheet.Range("A1").Offset(0, $i)
    If $oCell.Value == $_sMSN Then
    $CellMSN = StringReplace($oCell.Address, '$', '')
    ExitLoop
    EndIf
    Next
    If $CellMSN = '' Then Return MsgBox(0, 'Fehler', 'MSN: "' & $_sMSN & '" nicht vorhanden.')
    ; == aus allen Zellen der Spalte die Werte in ein Array übernehmen
    Local $aOut[$iRows], $iCount = 0
    For $i = 1 To $iRows -1
    $iVal = $oSheet.Range($CellMSN).Offset($i, 0).Value
    If $iVal <> '' Then
    $iVal = StringLeft($iVal, 12)
    If StringRight($iVal, 1) <> ' ' Then
    $aOut[$iCount] = $iVal
    $iCount += 1
    EndIf
    EndIf
    Next
    ReDim $aOut[$iCount]
    If Not $fOpen Then $oExcel.Application.Quit
    Return $aOut
    EndFunc

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

    ; == aus dem Ordner nur die Dateien mit den höchsten Buchstaben extrahieren
    Func _GetFileListNewest($_sPath)
    If StringRight($_sPath, 1) = '\' Then $_sPath = StringTrimRight($_sPath, 1)
    Local $FileList = _FileListToArray($_sPath, "*.nc", 1)
    _ArraySort($FileList, 0, 1)
    Local $sList = '', $sLeft, $sRight, $index, $maxIndex
    For $i = 1 To $FileList[0]
    $sLeft = StringLeft($FileList[$i], 14)
    $sRight = StringRight($FileList[$i], 7)
    $maxIndex = 0
    For $j = 65 To 90 ; A - Z
    $iStart = $maxIndex
    If $j = 65 Then $iStart = 1
    $index = _ArraySearch($FileList, $sLeft & Chr($j) & $sRight, $iStart)
    If $index > $maxIndex Then $maxIndex = $index
    Next
    If Not StringInStr($sList, $FileList[$maxIndex]) Then $sList &= $FileList[$maxIndex] & ' '
    Next
    Local $aOut = StringSplit(StringTrimRight($sList, 1) , ' ')
    _ArraySort($aOut, 0, 1)
    Return $aOut
    EndFunc

    [/autoit]
  • Tool zur Dateisuche mit einer Exceldatei als Suchmatrix

    • BugFix
    • 14. Juni 2013 um 22:44

    Mir ist gerade ein elementarer Fehler im Aufbau deiner Excel-Tabelle aufgefallen: Die Maschinennummern sind nicht in gleicher Relation mit den zugehörigen Daten verknüpft. Das ist unklug, da es durch notwendige Ausnahmebetrachtungen eine Fehlerquelle darstellt:
    - A1 - MSN7-8 - Daten in Spalte A
    - C1 - MSN9 - Daten in Spalte D !!
    - G1 - MSN10-12, 14-15 - Daten in Spalte G

    Wenn dieser Fehler ausschließlich MSN9 betrifft kann man das in der Abfrage berücksichtigen. Besser wäre aber in jedem Fall, das Tabellenblatt logisch korrekt aufzubauen, also für MSN9 die Daten auch in Spalte C. (Einfach den Zellverbund für "MSN7-8" um eine Spalte erweitern.)

  • Tool zur Dateisuche mit einer Exceldatei als Suchmatrix

    • BugFix
    • 14. Juni 2013 um 20:57
    Zitat

    -Zelle "D5": "M25890102004" = Suchbegriff

    Das Wort hatte mich irritiert. Meine Lesart war: -Zelle "M25890102004" ist der Suchbegriff der auf die Excel-Tabelle angewendet wird. Aber wenn ich das jetzt (hoffentlich) richtig verstehe, wird dieser Suchbegriff auf den Dateiordner angewendet.
    OK, ich werde mal ein kurzes Muster erstellen und posten.

    Achja - was hat es mit den Einträgen: "M25890..... - S.13 A" auf sich?

  • Tool zur Dateisuche mit einer Exceldatei als Suchmatrix

    • BugFix
    • 14. Juni 2013 um 11:17

    OK, das ist wesentlich verständlicher. ;)
    Zu Problem 1:
    M258_90102_004...
    - M258 immer ein Buchstabe + 3 Ziffern?
    - 90102 immer 5 Ziffern?
    - 004 immer 3 Ziffern?

    Edit: Da hast du dich aber irgendwie vertan, den von dir als "D5" benannten Wert (M25890102004) gibt es in der Tabelle gar nicht. "D5" enthält hier M25890119004. Meintest du "D6" (M25890120004) ?

    Und was ich überhaupt nicht verstehe: Welchen Sinn hat die Excel-Tabelle? Du entnimmst aus der Tabelle keinerlei Werte für die weiteren Abläufe. Dein Suchbegriff selbst enthält bereits den Stamm für die zu suchenden Dateinamen, es müssen nur noch "_" eingefügt werden und Buchstaben für die neueste Version. Oder habe ich das falsch verstanden?

    Zu Problem 2:
    Das stellt kein Problem dar. Einfach solange lesen bis für den Buchstaben der höchste ASCII-Wert erreicht ist.

    Gesendet von meinem GT-I9001 mit Tapatalk 2

  • Tool zur Dateisuche mit einer Exceldatei als Suchmatrix

    • BugFix
    • 13. Juni 2013 um 08:27

    Tut mir leid, aber deine Erklärungen und dein Code lassen mich nicht wirklich nachvollziehen, was du eigentlich vorhast.
    Wenn du schon Bilder einstellst, dann solltest du auch anhand der dort abgebildeten Daten ein Bsp. aufzeigen. Beschreibe den Vorgang bitte so, wie du es von Hand machen würdest, damit die Prozessreihenfolge ersichtlich wird.

  • DllCall GUIDesign

    • BugFix
    • 12. Juni 2013 um 20:57
    Zitat von masterRobb

    Wo kann ich die Constants nachschauen?
    Habe mal in der Hilfe bei mir nachgeschaut von "$BCM-SETNOTE" konnte ich nichts finden :)

    Und danke schon mal für die Bemühungen ^^


    Konstanten sind in den entsprechenden Include-Dateien. Diese findest du im Installationsordner von AutoIt.
    Um mehr über die Konstanten zu erfahren: Einfach googeln mit "MSDN KONSTANTE", wobei der Konstantenname dann ohne $ zu schreiben ist.

  • DllCall GUIDesign

    • BugFix
    • 12. Juni 2013 um 20:21

    Ich erklär es mal kurz an dem ersten Call. Alle Infos kannst du MSDN entnehmen.

    [autoit]

    $button = GUICtrlCreateButton("button", 30, 190, 180, 60, 14, -1)
    DllCall("user32.dll",
    "UINT", ; == Returntyp
    "SendMessage", ; == Funktionsname [http://msdn.microsoft.com/en-us/library/…0(v=vs.85).aspx]
    "handle", GUICtrlGetHandle(-1), ; == Parametertyp, ~Wert (Handle des zuletzt erstellten Controls - $button)
    "UINT", $BCM_SETNOTE, ; == Parametertyp, ~Wert (Message-Value $BCM_SETNOTE aus der "ButtonConstants.au3")
    "ptr*", 0, ; == WPARAM -- muß für BCM_SETNOTE null sein [http://msdn.microsoft.com/en-us/library/…7(v=vs.85).aspx]
    "wstr") ; == null-terminierter WCHAR String, der den Note-Text enthält

    [/autoit]
  • DllCall GUIDesign

    • BugFix
    • 12. Juni 2013 um 19:00
    Zitat von masterRobb

    WELCHE Parameter ich übergeben kann


    Das ist aber kein Problem des DllCalls an sich. Dazu eignet sich die Dokumentation zu den entsprechenden Funktionen. MSDN ist da eine Top-Adresse. Dort werden die Parameter erläutert, evtl. notwendige Strukturen sind verlinkt. Aber all das nützt dir nichts, solange du die grundlegenden Prinzipien von Dll-Calls in AutoIt nicht beherrschst. Deshalb ist der Verweis auf mein Tutorial schon korrekt. ;)

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™