Ja, geht in einer Schleife. Größe? - Schau dir UBound() an.
Beiträge von BugFix
-
-
Meine Zeit als "Telefoner" war vor über 20 Jahren und rein analog geprägt. Damals war es zwingend notwendig a und b richtig zu beschalten, da du nur so die "R"-Taste zum Funktionieren bringen konntest. Da war Polarität maßgebend.
Digitale Geräte habe ich bei mr zu Haus auch selbst angeschlossen und da war es völlig egal wie ich a und b angeschlossen habe. Die von mir verwendeten Anlagen hatten a/b mittig im Stecker. Ich habe aber bei einem Bekannten mal einen Anschluß gesehen (Marke weiß ich nicht) mit a/b auf Pin 1/2 (Blick auf die Anschlüsse von vorn, Nase oben, 1=links)
Aber die Beschaltung wirst du über den Hersteller ergoogeln können. -
Wie ist denn den Standard-Belegung beim RJ11-Stecker?
Ich hab da schon verschiedene "Herstellerlösungen" gesehen, aber im Regelfall sind die mittigen Kontakte des Steckers belegt. Wenn du a und b verwechselst, spielt das normalerweise keine Rolle. Bei älteren analogen Anlagen war das noch von Bedeutung. -
Gewissermaßen als "Nebenprodukt" für eine Problemlösung brauchte ich die einem Prozeß zugehörigen Thread-IDs.
Vielleicht kann es noch jemand anders gebrauchen.Edit:
- Habe die Hilfsfunktionen jetzt in die Funktion eingebunden.
- Bug bei Integerrückgabe gefixt_GetThreadsList
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]
$a = _GetThreadsList('autoit3.exe')
;~ $a = _GetThreadsList('autoit3.exe', 0) ; Thread-IDs als Integer
_ArrayDisplay($a);===============================================================================
[/autoit]
; Function Name....: _GetThreadsList
; Description......: Gibt alle Thread-IDs zu einem übergebenen Prozeß zurück
; Parameter(s).....: $vPID Prozeß-ID/-Name, dessen Thread-IDs ermittelt werden sollen
; $fHex Rückgabe der Thread-IDs als 8-stellige Hexzahl (True=Standard) od. Integer
; Return Value(s)..: Erfolg
; Ein 2D-Array, [0][0] enthält Anzahl der Threads, [0][1] die PID
; [n][0] = Thread-ID, [n][1] = Kernel base priority level des Threads.
; Die Priorität ist eine Zahl von 0 bis 31, wobei 0 der kleinst möglichen Threadpriorität entspricht.
; Fehler
; 0 @error=1 Prozeß nicht vorhanden
; -1 @error=Fehlerwert DllCall DllCall fehlgeschlagen
; Author(s)........: BugFix ([email='bugfix@autoit.de'][/email])
;===============================================================================
Func _GetThreadsList($vPID, $fHex=True)
If Not IsNumber($vPID) Then
Local $pL = ProcessList($vPID)
If Not IsArray($pL) Then Return SetError(1,0,0)
$vPID = $pL[1][1]
EndIf
Local Const $TH32CS_SNAPTHREAD = 0x00000004
Local $ret, $SnapProcHandle, $NextProc, $TThreadEntry, $sThreads = '', $aTmp, $aCol, $thID
Local $tTHREADENTRY32 = DllStructCreate( _
'DWORD dwSize;' & _
'DWORD cntUsage;' & _
'DWORD th32ThreadID;' & _
'DWORD th32OwnerProcessID;' & _
'LONG tpBasePri;' & _
'LONG tpDeltaPri;' & _
'DWORD dwFlags;')
DllStructSetData($tTHREADENTRY32, 'dwSize', DllStructGetSize($tTHREADENTRY32))
$ret = DllCall('Kernel32.dll', 'int', 'CreateToolhelp32Snapshot', 'dword', $TH32CS_SNAPTHREAD, 'dword', 0)
If @error Then Return SetError(@error,0,-1)
$SnapProcHandle = $ret[0]
$ret = DllCall('Kernel32.dll', 'int', 'Thread32First', 'hwnd', $SnapProcHandle, 'ptr', DllStructGetPtr($tTHREADENTRY32))
If @error Then Return SetError(@error,0,-1)
$NextProc = $ret[0]
While $NextProc
If DllStructGetData($tTHREADENTRY32, 'th32OwnerProcessID') = $vPID Then
$thID = DllStructGetData($tTHREADENTRY32, 'th32ThreadID')
If $fHex Then $thID = Hex($thID,
$sThreads &= $thID & Chr(1) & String(DllStructGetData($tTHREADENTRY32, 'tpBasePri')) & @LF
EndIf
Local $ret = DllCall('Kernel32.dll', 'int', 'Thread32Next', 'hwnd', $SnapProcHandle, 'ptr', DllStructGetPtr($tTHREADENTRY32))
If @error Then Return SetError(@error,0,-1)
$NextProc = $ret[0]
WEnd
$aTmp = StringSplit(StringTrimRight($sThreads, 1), @LF)
Local $aOut[$aTmp[0]+1][2] = [[0,$vPID]]
For $i = 1 To $aTmp[0]
$aCol = StringSplit($aTmp[$i], Chr(1), 2)
$aOut[$i][0] = $aCol[0]
$aOut[$i][1] = $aCol[1]
$aOut[0][0] += 1
Next
Return $aOut
EndFunc ;==>_GetThreadsList -
Hi,
z.Zt. ist mal wieder eine neue Internetbetrugswelle am Laufen. In Eurem Mail-Eingang findet Ihr dann z.B. Folgendes:Betreff: Ermittlungsverfahren bei Sta Stuttgart
Absender: Rechtsanwaltskanzlei O. Kaltbrenner < conestogamf4 @ roy-iris.com > [spätestens bei der Absenderadresse bepißt man sich vor Lachen ;)]
Body: (Kurzform) Zahle 100 EUR und deine illegalen Musikdown- u. Uploads werden nicht strafrechtlich verfolgtkpl. Nachricht
Guten Tag,
in obiger Angelegenheit zeigen wir die anwaltliche Vertretung und Interessenwahrung der Firma Sony Music Entertainment Deutschland GmbH an.
Gegenstand unserer Beauftragung ist eine von Ihrem Internetanschluss aus im sogenannten Peer-to-Peer-Netzwerk
begangene Urheberrechtsverletzung an Werken unseres Mandanten. Unser Mandant ist Inhaber der ausschliesslichen
Nutzungs- und Verwertungsrechte im Sinne der §§ 15ff UrhG bzw. § 31 UrhG an diesen Werken, bei denen es sich um
geschutzte Werke nach § 2 Abs 1 Nr. 1 UrhG handelt.Durch das Herunterladen urherberrechtlich geschutzer Werke haben sie sich laut § 106 Abs 1 UrhG i.V. mit
§§ 15,17,19 Abs. 2 pp UrhG nachweislich strafbar gemacht.
Bei ihrem Internetanschluss sind mehrere Downloads von musikalischen Werken dokumentiert worden.Aufgrund dieser Daten wurde bei der zustandigen Staatsanwaltschaft am Firmensitz unseres Mandanten Strafanzeige
gegen Sie erstellt.Aktenzeichen: 240 Js 419/04 Sta Stuttgart
Ihre IP Adresse zum Tatzeitpunkt: 178.200.132.102
Illegal heruntergeladene musikalische Stucke (mp3): 11
Illegal hochgeladene musikalische Stucke (mp3): 37
Wie Sie vielleicht schon aus den Medien mitbekommen haben, werden heutzutage Urheberrechtverletzungen
erfolgreich vor Gerichten verteidigt, was in der Regel zu einer hohen Geldstrafe sowie Gerichtskosten fuhrt.
Genau aus diesem Grund unterbreitet unsere Kanzlei ihnen nun folgendes Angebot:
Um weiteren Ermittlungen der Staatsanwaltschaft und anderen offiziellen Unannehmlichkeiten wie Hausdurchsuchungen und Gerichtsterminen aus dem Weg zu gehen, gestatten wir ihnen den Schadensersatzanspruch
unseres Mandanten aussergerichtlich zu lösen.
Wir bitten Sie deshalb den Schadensersatzanspruch von 100 Euro bis zum 29.03.2011 sicher und unkompliziert
mit einer UKASH-Karte zu bezahlen. Eine Ukash ist die sicherste Bezahlmethode im Internet und
fur Jedermann anonym an Tankstellen, Kiosken etc. zu erwerben.
Weitere Informationen zum Ukash-Verfahren erhalten Sie unter: http://www.ukash.com/deNachdem Sie den Ukash oder Paysafecard* Voucher gekauft haben, geben sie den auf unserer Homepage ein.
* alternativ konnen Sie auch mit Paysafecard zahlen
Link: http://www.paysafecard.com/deGeben Sie bei Ihrer Zahlung bitte ihr Aktenzeichen an!
Sollten sie diesen Bezahlvorgang ablehnen bzw. wir bis zur angesetzten Frist keinen 19- stelligen
Ukash PIN-Code im Wert von 100 Euro erhalten haben(oder gleichwertiges Paysafecard Coupon), wird der Schadensersatzanspruch offiziell
aufrecht erhalten und das Ermittlungsverfahren mit allen Konsequenzen wird eingeleitet. Sie erhalten
dieses Schreiben daraufhin nochmals auf dem normalen Postweg.Hochachtungsvoll,
Rechtsanwalt Olaf Kaltbrenner
Sehr originell finde ich, dass ich im Schreiben nicht angesprochen werde (logisch in Unkenntnis meiner Identität) - aber angeblich dieses Schreiben mir auch auf dem Postweg zugeht.
Auch zum Brüllen ist die "IP zum Tatzeitpunkt", da hat man sich mal eben im Adresspool der "UNITYMEDIA-POOL-NET" bedient, die aber - ach wie seltsam - mir gar keine IP erteilen könnte.
Die Deutsche Sprache hat bekanntlich ihre Tücken, aber dass Umlaute sooo schwierig sind... alle "ü" wurden als "u" geschrieben.
Ich persönlich würde eigentlich Niemanden für so ängstlich halten, dass er auf solchen Bockmist reagiert. Aber sicherheitshalber stelle ich es mal der Allgemeinheit zur Verfügung, und sei es nur zur Belustigung.
-
Ich denke, dass zum Einen AutoIt inzwischen so gut bestückt ist, dass es schwerfällt sinnvolle Erweiterungen zu finden und zum Anderen werden einige sinnvolle Dinge, die von verschiedenen Usern weltweit vorgeschlagen wurden aufgrund einer mir absolut unerklärlichen Sturheit weiterhin ignoriert. (Mir fällt z.B. meine Lösung zu _GUICtrlListView_SimpleSort ein, die auch eine Sortierung von IParam enthält, wodurch z.B. die Item-Checkboxen mitsortiert werden. Standardmäßig unmöglich)
Ich würde aber nicht unbedingt zu anderen Sprachen schielen um zu sehen, was da geht und hier nicht. AutoIt ist nunmal AutoIt.
-
Ich finde es mal wieder berauschend, welche Faulheit einige User an den Tag legen.
Sollen wir dir vielleicht noch ein Nußtörtchen backen?!
10 Sekunden Aufwand bringen dir detaillierte und vollständige Skriptlösungen, ohne dass du User des Forums beleidigen musst!! -
Abschließende Beurteilung: Der Scherz war gut gelungen.
Wenn doch einige Leute draufreinfallen, zeugt das von seiner Qualität. 
Wer sich grämt, dass er der "Depp" war, kann ja in einem Jahr mal selbst einen platzieren.
-
He Ilse,
was ist dir da noch unklar?
Da du sagtest, deine Daten liegen in CSV-Files vor, bin ich davon ausgegangen, dass du damit umgehen kannst und auch deren Struktur kennst.
Am Besten, du gibst mal deinen Wissensstatus in diesem Bereich an und dann kann man davon ausgehend gezielt erklären. -
Ich habe mal ein Bsp. anhand der Combo Stadt erstellt.
Unklar ist mir deine INI-Gestaltung. Wird das für jede Stadt eine eigene? Dann ist das OK, anderenfalls macht es keinen Sinn.Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]
; ich gehe hier davon aus, dass die Combos (Stadt, Bundesland) befüllt sind; unklar ist noch:
[/autoit] [autoit][/autoit] [autoit]
; Wird für jede Stadt eine eigene INI geschrieben?
; Falls nicht sollte die Sektion nicht Stadt heißen,
; sondern den Namen der Stadt tragen und alle zugehörigen Werte als Keys dieser Sektion
Global $sPathINI = 'Pfad_INI.ini' ; eine? - für jede Stadt eine?Global $aStadt, $sPathStadt = 'Pfad_Stadt.csv'
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Global $sSeparatorCSV = ';' ;<== falls kein Semikolon, hier ändern
Global $aKeys[11] = ['Stadt'] ; Array mit Keys für INI erstellen
For $i = 1 To 10
$aKeys[$i] = 'Wert' & $i
Next
_FileReadToArray($sPathStadt, $aStadt) ; Stadt.csv einlesen in Array
; Element1 ist Zähler, Element2 enthält Spaltenüberschriften
; in 2D-Array übertragen
Global $aStadt2D[$aStadt[0]-1][11]
Local $aTmp
For $i = 2 To $aStadt[0]
$aTmp = StringSplit($aStadt[$i], $sSeparatorCSV)
For $j = 1 To $aTmp[0]
$aStadt2D[$i-2][$j-1] = $aTmp[$j]
Next
Next;...
[/autoit] [autoit][/autoit] [autoit]
;...While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Start
_WriteINI()
EndSwitch
WEndFunc _WriteINI()
[/autoit]
Local $sStadt = GUICtrlRead($Combo1)
Local $index = _ArraySearch($aStadt2D, $sStadt, 0, 0, 1, 0, 1, 0)
If @error Then Return
Local $sToWrite = ''
For $i = 0 To 10
$sToWrite &= $aKeys[$i] & '=' & $aStadt2D[$index][$i] & @LF
Next
IniWriteSection($sPathINI, 'Stadt', StringTrimRight($sToWrite, 1))
EndFunc -
Nun, da befindest du dich in einem Dilemma. Das hört sich so an wie: Wasch mich, aber mach mich nicht naß.
Wenn du sicher gehen willst, dass dein Log auch vorliegt, nachdem irgendein Vorgang versagt hat und evtl. dein Programm abgeschossen ist, bleibt dir tatsächlich nur ein finales Schreiben in die Log-Datei nach jedem Vorgang. Das dauert natürlich seine Zeit.
Ich würde daher auch empfehlen, deine Programmabläufe in kritische Zonen zu unterteilen.
Z.B. grob in relevant und wenig relevant. Dann legst du fest: wenig relevante Ereignisse sammeln und mit dem nächsten relevanten Ereignis final schreiben. Somit kannst du sicher schon einige Zeit sparen.
Sag deinem Chef mal, er kann nicht verlangen, dass du ab sofort Sitzungsprotokolle wortwörtlich auf Papier schreibst aber gleichzeitig den Papierverbrauch senkst.
-
Ich habe mein Bsp. mal auf 2 Inputs mit verschiedenen Listboxinhalten erweitert. Kannst du jetzt auf beliebig viel ausbauen.
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <ListBoxConstants.au3>
#include <WindowsConstants.au3>
#include <GUIListBox.au3>
#Include <WinAPI.au3>
#include <Misc.au3>
Opt("GUICloseOnESC", 0)#region - Deklarationen für Sense
[/autoit] [autoit][/autoit] [autoit]
Global $show = False
Global $indexB = -1
Global $SenseGui, $SenseCtrl, $guiBox, $box, $tmp, $currCtrl = 'Edit1' ; <== bei Start erstes Input (Achtung Anzahl Edit-Class, s. Input Create)
Global $POSSenseGui[2]; unterschiedliche Boxinhalte festlegen
[/autoit] [autoit][/autoit] [autoit]
Global $aData1[10] = ['Birne','Alligator','Auto','Dank','Automat','Bett','Garten','Bettler','Danke','Danksagung']
Global $aData2[12] = ['Blech','Anagramm','Arie','Dolomiten','Artist','Berlin','Domino','Balearen','Atomausstieg','Debakel','Anker','Borelie']#Region Box
[/autoit] [autoit][/autoit] [autoit]
; bei Start mit Data1 befüllen
$guiBox = GUICreate('', 150, 85, 0, 0, BitOR($WS_SIZEBOX,$WS_POPUP), $WS_EX_TOPMOST)
$box = _GUICtrlListBox_Create($guiBox, '', 0, 0, 150, 86, BitOR($LBS_SORT, 0x00B00002))
; ListBox muß 1 Pixel höher als GUI sein - sonst fehlerhafte Darstellung
_ListBoxFill($aData1)
#EndRegion BoxFunc _ListBoxFill($aData)
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To UBound($aData) -1 ; falls Daten mit _FileReadToArray gelesen werden: StartIndex=1
_GUICtrlListBox_AddString($box, $aData[$i])
Next
EndFuncGUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_MOVE, "_WM_MOVE")
GUIRegisterMsg(0x231, "_WM_ENTERSIZEMOVE")
#EndRegion - Deklarationen Sense#Region Main
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$Form1 = GUICreate('Intelli Sense Box', 400, 300, 200, 50)
$SenseGui = $Form1 ; <== Für Allgemeingültigkeit Zuweisung an $SenseGui
$Input1 = GUICtrlCreateInput('', 10, 10, 380, 21) ; wenn Fokus ==> "Edit1" ! - die Ziffer kann variieren, wenn noch andere Edit-Class Elemente erstellt wurden!!
$SenseCtrl = $Input1 ; <== bei Start ist Input1 das $SenseCtrl, wechselt bei Fokusverlust
$Input2 = GUICtrlCreateInput('', 10, 40, 380, 21) ; wenn Fokus ==> "Edit2" !
GUISetState()
#EndRegion MainWhile True
[/autoit] [autoit][/autoit] [autoit]
_ChooseBox()
If GUIGetMsg() = $GUI_EVENT_CLOSE Then Exit
; Fokus abfragen:
$tmp = ControlGetFocus($Form1)
If StringInStr('Edit1 Edit2', $tmp, 1) Then ; hat eines der beiden Inputs den Fokus?
If $tmp <> $currCtrl Then
$currCtrl = $tmp
Switch $currCtrl ; das Input mit Fokus als SenseCtrl zuweisen
Case 'Edit1'
$SenseCtrl = $Input1
_GUICtrlListBox_ResetContent($box)
_ListBoxFill($aData1)
Case 'Edit2'
$SenseCtrl = $Input2
_GUICtrlListBox_ResetContent($box)
_ListBoxFill($aData2)
EndSwitch
EndIf
EndIf
WEnd#region - SenseFunc's
[/autoit] [autoit][/autoit] [autoit]
Func _ChooseBox()
If Not $show Then Return
If _IsPressed('0D') Then ; ENTER
ControlSetText($SenseGui, '', $SenseCtrl, _GUICtrlListBox_GetText($box, $indexB))
GUISetState(@SW_HIDE, $guiBox)
$show = False
ElseIf _IsPressed('1B') Then ; ESC
GUISetState(@SW_HIDE, $guiBox)
$show = False
ElseIf _IsPressed('26') Then ; UP
If $indexB > 0 Then
$indexB -= 1
_GUICtrlListBox_SetCurSel($box, $indexB)
Sleep(90)
EndIf
ElseIf _IsPressed('28') Then ; DOWN
If $indexB < _GUICtrlListBox_GetCount($box)-1 Then
$indexB += 1
_GUICtrlListBox_SetCurSel($box, $indexB)
Sleep(90)
EndIf
EndIf
EndFuncFunc MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
Local $nNotifyCode = BitShift($wParam, 16)
Local $hCtrl = $lParam
Local $hSenseCtrl = $SenseCtrl
If Not IsHWnd($hSenseCtrl) Then $hSenseCtrl = GUICtrlGetHandle($hSenseCtrl)
If ($nNotifyCode = 1024 Or $nNotifyCode = 6) And $hCtrl = $hSenseCtrl Then
Local $str = ControlGetText($SenseGui, '', $SenseCtrl)
$indexB = _GUICtrlListBox_FindString($box, $str)
_GUICtrlListBox_SetCurSel($box, $indexB)
$caret = _CaretPos()
If Not @error And Not $show Then
If $caret[3] + $caret[4] - 95 < 0 Then ; Platz für Liste über dem Ctrl ausreichend?
WinMove($guiBox, '', $caret[0], $caret[1] +25) ; Versatz 25 (Ctrlhöhe+5) unter y vom Ctrl
Else
WinMove($guiBox, '', $caret[0], $caret[1] -95) ; Versatz 95 (Boxhöhe+10) über y vom Ctrl
EndIf
GUISetState(@SW_SHOWNOACTIVATE, $guiBox)
$show = True
EndIf
ElseIf $hCtrl = $box And $nNotifyCode = 1 Then
$indexB = _GUICtrlListBox_GetCurSel($box)
ControlSetText($SenseGui, '', $SenseCtrl, _GUICtrlListBox_GetText($box, $indexB))
GUISetState(@SW_HIDE, $guiBox)
$show = False
ElseIf $show And $nNotifyCode = 512 And $hCtrl = $lParam And Not $hCtrl = $box Then
GUISetState(@SW_HIDE,$guiBox)
$show = False
EndIf
Return $GUI_RUNDEFMSG
EndFuncFunc _WM_ENTERSIZEMOVE($hWnd)
[/autoit] [autoit][/autoit] [autoit]
If $hWnd = $SenseGui Then $POSSenseGui = WinGetPos($SenseGui)
EndFuncFunc _WM_MOVE($hWnd)
[/autoit] [autoit][/autoit] [autoit]
If $hWnd = $SenseGui Then
Local $pos = WinGetPos($guiBox)
Local $postemp = WinGetPos($SenseGui)
WinMove($guiBox,"",$pos[0]-($POSSenseGui[0]-$postemp[0]),$pos[1]-($POSSenseGui[1]-$postemp[1]))
$POSSenseGui = WinGetPos($SenseGui)
EndIf
EndFuncFunc _CaretPos()
[/autoit]
Local $old = Opt("CaretCoordMode", 0) ;relative mode
Local $c = WinGetCaretPos() ;relative caret coords
Local $w = WinGetPos("") ;window's coords
Local $f = ControlGetFocus("","") ;text region "handle"
Local $e = ControlGetPos("", "", $f) ;text region coords
Local $h = ControlGetHandle("", "", $f) ;Ctrl-Handle
Local $t[5]
If IsArray($c) and IsArray($w) and IsArray($e) Then
If _WinAPI_IsClassName($SenseCtrl, 'Edit') Then ; Input wird als Edit-Class erkannt
$t[0] = $c[0] + $w[0] + $e[0]
ElseIf _WinAPI_IsClassName($SenseCtrl, 'ComboBox') Then
$t[0] = $w[0] + $e[0]
EndIf
$t[1] = $c[1] + $w[1] + $e[1]
$t[2] = $h
$t[3] = $w[1]
$t[4] = $e[1]
Opt("CaretCoordMode", $old)
Return $t ;absolute screen coords of caret cursor
Else
Opt("CaretCoordMode", $old)
SetError(1)
EndIf
EndFunc
#endregion - SenseFunc's -
Ilse, du kostest mich Nerven. :wacko:
Schon wieder sagst du, dass du die Werte hast und irgendwo eintragen willst.
Also mal Step by Step.
- Werte in deinem Kopf, Combo auswählen, Wert hinzufügen (per Input?), in Datei (csv, ini, ..txt egal) speichern
- Werte in einer Datei, aus Datei einlesen, Combo.. Rest wie obenSag bitte ganz genau welcher Wert von wo nach wo kommt und gespeichert werden soll.
-
Wir reden aneinander vorbei:
"Ich habe je Stadt 10 unterschiedliche Zahlenwerte "
Da liegt doch der Hund begraben, wo hast du denn diese Zahlenwerte? Ohne Kenntnis dessen läßt sich schwerlich ein sinnvoller Lösungsvorschlag machen. -
Also sc4ry, irgendwie hast du einen Knoten im Hirn.

Wenn du per Skript festlegst welche Dateien aus welchem Ordner wann gedruckt werden, kannst du in der Zeit Kaffee trinken - manuell brauchst du rein gar nix machen.
-
so erhalte ich 4 Tabellen wobei die erste den Namen "tbl_name" hat.
[autoit]
Na das läßt sich doch ändern
;===============================================================================
[/autoit]
; Function Name: _SQLite_GetTableList
; Description:: Gibt alle Tabellen einer geöffneten SQLite.db zurück
; Requirement(s): Eine mit _SQLite_Open() geöffnete DB
; #include <SQLite.au3>
; Return Value(s): Erfolg Ein Array mit den Tabellennamen der DB, an $array[0] die Anzahl
; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
;===============================================================================
Func _SQLite_GetTableList()
Local $aRow, $hQuery, $sTable = ''
_SQlite_Query (-1, "SELECT tbl_name FROM sqlite_master WHERE type='table';", $hQuery)
While _SQLite_FetchData ($hQuery, $aRow, False, False) = $SQLITE_OK
$sTable &= $aRow[0] & Chr(1)
WEnd
_SQLite_QueryFinalize($hQuery)
Return StringSplit(StringTrimRight($sTable, 1), Chr(1))
EndFunc ;==>_SQLite_GetTableList -
Viel interessanter ist doch dann die Frage, woher die anderen zu schreibenden Werte kommen sollen? Sind die in irgendeiner Tabelle/Ini/Textdatei oder was auch immer. Denn erst wenn man das alles miteinander verknüpft, kommst du zu einer sinnvollen Automatisierung.
-
Viel zu umständlich, wenn du weiß, wie PDFCreator arbeitet.
1. PDFCreator als Standard Drucker wählen
2. (per Skript) alle deine 350 Dateien in die Druckerwarteschlange des PDFCreators drucken
3. Wenn du willst kannst du jetzt noch immer die Reihenfolge ändern (Listview-Übersicht mit den Druckaufträgen)
4. alle Druckaufträge zu einem PDF-Dokument drucken - ferddischIch weiß nicht, ob es evtl. ein Limit für das Datenvolumen der zu verarbeitenden Files gibt, aber 85 Worddateien mit einem Gesamtvolumen von ~100 MB hatte ich auf diese Weise schon verarbeitet.
-
Versuchs mal so:
[autoit]_SQLite_GetTable($hSQL, "SELECT tbl_name FROM sqlite_master WHERE type='table';", $aResult, $iRows, $iColumns)
[/autoit] -
Ja, die automatische Erweiterung der Sprachauswahl ist supi.
Ich verwende auch "Scansoft Steffi" - die ist so.... erotisch.