Farbig gehts so: (Zeile 42 im Bsp.) Eigene Konsole
Beiträge von BugFix
-
-
Dafür solltest du nicht die Standardkonsole verwenden, sondern eine eigene Konsole erstellen (Bsp. dazu haben progandy und ich schon gepostet).
Hat auch den Vorteil, dass du z.B. Textpassagen farblich gestalten kannst. -
Ich verweise wieder mal auf TeamViewer - absolut idiotensicher und von jedem Laien auf Anhieb bedienbar.

-
Einfach eine Inputbox für User-Interaktion verwenden:
Spoiler anzeigen
[autoit]Switch InputBox('Anwendungswahl', 'Gib "A" oder "B" ein', 'A')
[/autoit] [autoit][/autoit] [autoit]
Case 'A'
_A()
Case 'B'
_B()
Case Else
Exit ConsoleWrite('Fehlerhafte Auswahl' & @CRLF)
EndSwitchFunc _A()
[/autoit] [autoit][/autoit] [autoit]
ConsoleWrite('A gewählt' & @CRLF)
EndFuncFunc _B()
[/autoit]
ConsoleWrite('B gewählt' & @CRLF)
EndFunc -
chip: Laß es bitte, eine Diskussion in einem Juraforum hat keinen anderen Stellenwert als die hier geführte. Auch dort werden nur Meinungen ausgetauscht. Niemand hat bisher auf ein rechtsgültiges Gesetz/Urteil verweisen können, wo eine eindeutige Sachlage erkennbar ist.
In diesem Sinne: BTT -
Noch ein Verweis auf ein fertiges Produkt: Teamviewer
Absolut kinderleicht zu händeln (hat sogar meine Mom mit ihren 72 Jahren geschafft) und bietet dir einen eigenen Dateiexplorer zum Transfer. -
Musst da nicht selber lachen?
Nein, muß ich nicht. Auch ich bin kein Jurist. Dinge, die (auch wenn 'geringfügigerer' Natur) klar liegen, werden dann auch ebenso klar behandelt.
Wenn ich aber Zweifel habe gilt: Im Zweifel für...
Ich habe keine Probleme damit, meinen Standpunkt zu revidieren. Doch hätte ich dazu gern fundierte Argumente. Und die von dir eingebrachten sind mir da noch nicht ausreichend.
Bring mir irgendein Urteil, in dessen Text klar formuliert ist: Das Erstellen von Emulatoren ist gesetzwidrig. Dann bin ich der erste, der hier ein Schloß vorhängt.
-
chip
Mir ist bisher keine Rechtslage bekannt, die Emulatoren untersagt. Deine geposteten Links unterstützen deine Aussage nicht.
Probleme entstehen m.M. rechtlich dann, wenn zur Nachbildung (Emulation) der Hardwarefunktionen in irgendeiner Form z.B. die ROM-Inhalte einer Spielkonsole ausgelesen und verwertet werden.
Insofern wäre im hier anstehenden Fall zu klären, wie die "Dokumentationen" entstanden sind. Sofern jedoch keine klaren Rechtsverstöße erkennbar sind, gilt auf jeden Fall die Unschuldsvermutung.
Ergo: Thread bleibt erst mal offen. -
Und wenn du es selbst spielen möchtest: Hier die Noten.
-
Du mußt die Inhalte deiner Inputs auch auslesen: GuiCtrlRead()
-
Dummerweise habe ich mit @LF dann immernoch ein Steuerzeichen am Ende *grübel*
mit CHR(13) habe ich das Steuerzeichen davor . . .
mit @CRLF habe ich jedes zweites Element im Array leer *grübel weiter*
Ich nehme mal an, du hast das Split-Flag nicht gesetzt ("flag = 1, es wird der gesamte Trennzeichenstring als Trennmarkierung genutzt"). Denn @CRLF sind 2 Zeichen!
-
1. Du mußt natürlich den Inhalt der Datei erstmal einlesen (z.B. wenn lokal mit FileRead)
2. Dein Pattern paßt nicht. Nach "<td>Level:</td>" kommt ein Zeilenumbruch und die Folgezeile beginnt entweder mit etlichen Leerzeichen oder mit Tabs. Auch müssen Metazeichen maskiert werden.
Also probier mal noch ein wenig selbst. -
Schau dir StringInStr() an.

-
Die Funktion selber soll dir auch nicht helfen
- aber dort habe ich auch das +/- Problem lösen müssen. 
-
TimBlo: Leider mal wieder ein absolutes Negativbeispiel der Fragekultur.
Du erzählst, was leider nicht geht, ohne uns zu zeigen mit welchem Code du versuchst an das Problem heranzugehen.
Ein typischer Fall von: Wasch mich - aber mach mich nicht naß. :wacko: -
Das hatte ich mal für einfache Binome erstellt:
Spoiler anzeigen
[autoit]ConsoleWrite(Binom('12.5a-3.5b'))
[/autoit]
; Ausgabe: (12.5a - 3.5b)² = 156.25a² -87.5ab +12.25b²
;===============================================================================
; Function Name: Binom($sSquare)
; Description:: Anwendung 1./2. Binomische Formel auf übergebene Quadratgleichung
; Parameter(s): $sSquare - der quadratische Ausdruck, z.B. "12.5a-3.5b" für "(12.5a+3.5b)^2"
; Return Value(s): die gesamte Gleichung ausformuliert, z.B. "(12.5a - 3.5b)² = 156.25a² -87.5ab +12.25b²"
; Author: BugFix
;===============================================================================
Func Binom($sSquare)
Local $sOut, $ret, $signA, $signB, $numA, $numB, $chrA, $chrB, $sqA, $sqB, $2AB
$sSquare = StringStripWS($sSquare,
If StringLen($sSquare) < 3 Then Return SetError(1,0,0)
$ret = StringRegExp($sSquare, '([+-])?(\d+.\d+|\d+)?([a-zA-Z])', 3)
$sOut = '(' & $ret[0] & $ret[1] & $ret[2] & ' ' & $ret[3] & ' ' & $ret[4] & $ret[5] & ')' & Chr(178) & ' = '
$signA = '-'
If $ret[0] <> '-' Then $signA = '+'
$numA = 1
If $ret[1] <> '' Then $numA = $ret[1]
$chrA = $ret[2]
$signB = '-'
If $ret[3] <> '-' Then $signB = '+'
$numB = 1
If $ret[4] <> '' Then $numB = $ret[4]
$chrB = $ret[5]
$sqA = $numA^2
$sqB = $numB^2
If $sqA = 1 Then $sqA = ''
If $sqB = 1 Then $sqB = ''
$2AB = 2*($signA & $numA)*($signB & $numB)
If $2AB > 0 Then $2AB = '+' & $2AB
$sOut &= $sqA & $chrA & Chr(178) & ' ' & $2AB & $chrA & $chrB & ' +' & $sqB & $chrB & Chr(178)
Return $sOut
EndFunc ;==>Binom -
Die Listview-UDF verlangt das Handle, nicht die ID.
[autoit]$IDListview = GuiCtrlCreateListview(...)
[/autoit]
$hListview = GuiCtrlGetHandle($IDListview) -
Hallo Ilse,
wenn ich dein Ansinnen richtig verstanden habe soll doch nix weiter passieren, als nach Fallentscheidung verschieden Skripte abzuarbeiten.
Du bist nun (warum auch immer) der unverrückbaren Meinung du müsstest einzelne Skripte verwenden. Dieser Denkansatz ist schlicht und einfach falsch - wirf ihn über Bord, sonst gehst du Wasser saufen.
Verwende parametrisierte Funktionen. Übergib je nach Fallentscheidung halt entsprechende Parameterinhalte. Das hat auch den Vorteil, dass dein Skript übersichtlicher wird.
Also nicht: Main.au3 und Datei1.au3, Datei2.au3 - sondern: Main(), Datei1(param1, param2,..), Datei2(param1, param2,..).
Versuche mal, dein Skript dahingehend zu gestalten. Wenn du nicht richtig klar kommst melde dich - aber bitte mit möglichst genauer Beschreibung.
-
Da ich mit dem Fenster nicht weiter gekommen bin, habe ich nun einen anderen Weg gewählt: Die Scintilla-Fenster sind ja Childs des Npp-Fensters und lassen sich auf diese Weise ermitteln.
Nun kann ich auf das Scintilla-Handle zugreifen.
Da Notepad aber in einem eigenen Adressraum rumgeistert, muß ich die Speicherzugriffe separat steuern. Dazu habe ich mir Funktionen erstellt.
Im folgenden Bsp. will ich den gesamten Text einer Zeile mit der Funktion "SCI_GETLINE($iLine)" ausgeben. Jedoch bekomme ich als Rückgabe ausschließlich ein Fragezeichenkette. :wacko:
Eine Untersuchung der Scintilla-Fenster mit Winspector zeigte mir dann, dass dies wohl der Fenstertitel ist. Da fehlt mir jeoch jeder Bezug zu, wieso dort der Fenstertitel statt des Zeileninhalts erscheint.
Hat da jemand eine Idee?Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#Include-once
#Include <SendMessage.au3>
#Include <Memory.au3>
#Include <WinAPI.au3>Global $hWndScintilla = _GetScintillaHwnd()
[/autoit] [autoit][/autoit] [autoit]
If Not $hWndScintilla Then Exit MsgBox(0, 'Fehler', 'Keine Notepad++ Instanz gestartet.')
Global Const $SCI_GETLINE = 2153
Global Const $SCI_LINELENGTH = 2350Local $ret = SCI_GETLINE(1) ; Zeilennummern in Npp sind Nullbasiert
[/autoit] [autoit][/autoit] [autoit]
ConsoleWrite('@@ DEBUG_Line: ' & @ScriptLineNumber & ', Var: $ret >> ' & $ret & ' ; @error: ' & @error & ', @extended: ' & @extended & @LF) ; Debug To ConsoleFunc _GetScintillaHwnd($iInstance=1)
[/autoit] [autoit][/autoit] [autoit]
Local $hScintilla = 0, $PID_Npp = WinGetProcess('[CLASS:Notepad++]')
Local $optOld = Opt('WinSearchChildren', 1)
Local $aWin = WinList('[CLASS:Scintilla;INSTANCE:' & $iInstance & ']')
Opt('WinSearchChildren', $optOld)
For $i = 1 To $aWin[0][0]
If WinGetProcess($aWin[$i][1]) = $PID_Npp Then
$hScintilla = $aWin[$i][1]
ExitLoop
EndIf
Next
Return $hScintilla
EndFunc ;==>_GetScintillaHwndFunc SCI_GETLINE($iLine) ; FAIL
[/autoit] [autoit][/autoit] [autoit]
Local $iLen = SCI_LINELENGTH($iLine), $sText
Local $aNppMem = _AllocateNppMem($iLen)
_SendMessage($hWndScintilla, $SCI_GETLINE, $iLine, $aNppMem[1])
$sText = _ReadFromNppMem($aNppMem[0], $aNppMem[1], $iLen)
Return $sText
EndFunc ;==>SCI_GETLINEFunc SCI_LINELENGTH($iLine) ; OK
[/autoit] [autoit][/autoit] [autoit]
Return _SendMessage($hWndScintilla, $SCI_LINELENGTH, $iLine)
EndFunc ;==>SCI_LINELENGTHFunc _AllocateNppMem($iSize) ; MemPointer -- nach Nutzung freisetzen!!
[/autoit] [autoit][/autoit] [autoit]
Local Const $PROCESS_VM_OPERATION = 0x0008, $PROCESS_VM_READ = 0x010, $PROCESS_VM_WRITE = 0x020
Local $VMFLAGS = BitOR($PROCESS_VM_OPERATION, $PROCESS_VM_READ, $PROCESS_VM_WRITE)
Local $PID = WinGetProcess('[CLASS:Notepad++]')
_WinAPI_GetWindowThreadProcessId($hWndScintilla, $PID)
Local $hProcess = _WinAPI_OpenProcess($VMFLAGS, False, $PID)
Local $pMem = _MemVirtualAllocEx($hProcess, 0, $iSize, BitOR($MEM_RESERVE, $MEM_COMMIT), $PAGE_READWRITE)
Local $aNppMem[2] = [$hProcess,$pMem]
Return $aNppMem
EndFunc ;==>_AllocateNppMemFunc _ReadFromNppMem($hProcess, $pMem, $iSize) ; $iSize = Anz. zu lesender Zeichen
[/autoit]
Local $sBuffer = DllStructCreate('wchar[' & $iSize +1 & ']'), $iRead
_WinAPI_ReadProcessMemory($hProcess, $pMem, DllStructGetPtr($sBuffer), $iSize, $iRead) ; Return True, OK
$sBuffer = StringLeft(DllStructGetData($sBuffer, 1), $iRead)
_MemVirtualFreeEx($hProcess, $pMem, $iSize +1, $MEM_RELEASE)
Return $sBuffer
EndFunc ;==>_ReadFromNppMem -
Ich verstehe UBound() nicht
Schon mal mein Array-Tut gelesen? (s. Sig.)
UBound() gibt dir die Anzahl der Elemente in einem Array zurück.
Das erste Element hat Index 0, also ist das letzte Element: Anzahl-1 ( UBound($array)-1 ). Mit diesem Wissen kannst du das Array durchlaufen.