Für variable Längen kenne ich eigentlich folgende Variante:
- erstmaliger Aufruf der Funktion gibt notwendige Pufferlänge zurück
- damit wird der Puffer erstellt und im zweiten Aufruf von der Funktion befüllt
Beiträge von BugFix
-
-
Jetzt hier dazu einen Thread aufzumachen - OK
besser:
Wenn Admin/Mod/Poweruser online sind, diese sofort anschreiben (PN, nicht in SB) damit die Vollpfosten sofort stillgesetzt werden können.
Selbst wenn ich online angezeigt werde, lese ich nicht ständig die SB mit. Aber beim Aktualisieren fällt eine neue PN schon auf und man kann umgehend reagieren. -
Ich habe auch die Erfahrung gemacht, dass (geschätzt) 90% aller Menschen die Sprache gewohnheitsmäßig richtig verwenden. Regeln kenne ich selber auch kaum (hat mich im Deutsch Unterricht nie interessiert), weiß aber aufgrund meiner "Leseerfahrung" die korrekte Anwendung.
-
Wäre das möglich?
Ja, das geht. Allerdings würde ich mit der Umsetzung abwarten ob tatsächlich die katastrophalen geplanten Änderungen in AutoIt Einzug halten ( Variablen sollen ohne führendes $-Zeichen deklariert werden können, gerade das ist aber ein Punkt, der doch AutoIt so angenehm händeln lßt. ) -
Off Topic: Kann mir jemand sein SCITE Schema (per PM) schicken,
- SciTE starten
- Strg+1 (ruft Konfigurator auf)
- Tab "Color Settings"
- Button "New Scheme"
- ComboBox - Auswahl "OldScite4AutoIt3"
- Button "Save+Apply"ferdsch

-
Funktioniert bei mir nicht

Eine geniale Fehlerbeschreibung.
Ist dir auch klar, was die Funktion bewirkt?
- Bereits bestehende, faltbare Bereiche, werden beim Öffnen eines Dokumentes gefaltet.
- Neue Bereiche betrifft das natürlich nicht.Wenn diese Voraussetzungen bei dir gegeben sind und trotzdem wird nicht gefaltet, kann es sein, dass du nicht die Version "SciTE4AutoIt" installiert hast, sondern nur die "Lite"-Version.
-
Nebenbei:
Falls ihr noch irgendwelche Wünsche für die Arbeit mit SciTE habt, könnt ihr euch vertrauensvoll an mich wenden.
Es gibt kaum etwas, was sich nicht mit einem kleinen LUA-Skript lösen läßt.
-
dass ein String nach einer Leerstelle zwischen Char 85 und 115 durchsucht wird und dort der String getrennt wird
Getrennt bedeutet ja, das Leerzeichen bleibt erhalten.
Nur hast du nicht definiert, ob vor oder nach dem Leerzeichen getrennt werden soll.
Ich habe mal so gelöst: 85 biss 115 Zeichen, dann Leerzeichen, welches zum Folgeblock gehört, letzter Block kann 0 bis 84 Zeichen haben:(.{85,115}|.*)(?=\Z| )
-
Hi,
in den meisten Fällen überlese ich Rechtschreibfehler einfach.
Aber in letzter Zeit treten zwei Fehler so gehäuft auf, dass ich schon Angstzustände bekomme, wenn ich einen Thread zum Lesen öffne.
Deshalb mal als Info für all jene, denen das gar nicht mal bewusst ist:
- Paket wird niemals mit "ck" geschrieben. Die evtl. gedachte Ableitung packen -- Packet ist falsch. Es gibt da auch keine Unterschiede zwischen Postpaket und Datenpaket. Der Wortstamm bleibt derselbe.
- Das Verb lesen enthält in keiner Form der Anwendung jemals ein "ß". Die Aufforderung "Ließ bitte .." ist falsch und lautet richtig "Lies bitte .."
-
Die Funktion hat 3 Parameter:
_FilereadToArray2D($FILEPATH, $ARRAY [, $DELIM=-1])
- $FILEPATH: Pfad der Datei die gelesen werden soll
- $ARRAY: Eine Array-Variable, die vor dem Aufruf deklariert werden muss. Sie wird ByRef übergeben und enthält nachher die Daten.
- $DELIM: Trennzeichen, das in der Datei verwendet wird. Wird kein Trennzeichen übergeben (Vorgabe -1), wird ein 1D-Array erstellt, jede Zeile in ein Arrayelement. -
Welchen Sinn hat dann das Edit? Du nutzt es nur als Device Context. Es braucht also nicht da zu sein. Denn wenn du in dein Edit Text schreibst und vertikales Scrollen einsetzt - schau mal was mit deiner GDI-Zeichnung passiert.

-
Nur aufrufen geht mit
[autoit]ShellExecute(LINK)
[/autoit]Wenn du aber auch Suchbegriffe an Google übergeben möchtest oder gezielt auf bestimmten Seiten suchen möchtest schau dir mal meine Web-App an.
-
Du mußt natürlich den alten Listen-Inhalt löschen.
Geht ganz einfach, indem du das Listentrennzeichen (normalerweise die Pipe) den eigentlichen Daten voranstellst:GUICtrlSetData($h_List, "|Youtube|Vimeo|Clipfish|MyVideo")
-
@Sol.LrMartyn
Deine Lösung ist NICHT empfehlenswert!Ich habe das schon so oft wiedergekäut, wiederhole es aber gern nochmal:
Radios oder Checkboxen können mehr als den Status CHECKED od. UNCHECKED haben. Insofern ist die Abfrage If Ctrl = Status schlichtweg falsch, da sie zu fehlerhaften Ergebnissen führen kann. (Nebenbei ist der Vergleich mit == kompletter Blödsinn. Das ist ausschließlich für Case sensitiven Stringvergleich)Eine korrekte Abfrage prüft ob der gesuchte Status Bestandteil des gesamten Status ist. Dazu verwendet man BitAnd
[autoit]If BitAnd(GuiCtrlRead($Ctrl), $GUI_CHECKED) Then
[/autoit] -
In diesem "Edit-Control" wird mir nun eine Grafik angezeigt.
Glaub ich dir nicht. Vielleicht pappst du ein Picture drüber - aber Edot-Ctrl mit Grafik statt Text widerspricht den Eigenschaften eines Edits.
-

Die RegEx-Lösung habe ich bewußt nicht in Angriff genommen, weil dieses ja strenggenommen keine AutoIt-Lösung ist. - Ausserdem versteht die eh kaum jemand...
-
Hi,
es geht nicht darum die Kommentare generell zu löschen, sondern beim Lesen einer Skriptzeile nur den reinen Skriptanteil zu parsen.
Bisher habe ich das immer mit LUA gelöst (da ist es am Einfachsten :D). Da in Rosetta Code aber eine derartige Aufgabe bestand habe ich das nun in AutoIt gelöst.
Hier geht es nur um die Zeilen-Kommentare ( mit ; ), Blockkommentare sind davon nicht betroffen.Ein Zeilenkommentar beginnt mit einem Semikolon.
Aber es kann sein, dass ein Semikolon Bestandteil eines Stringparameters in einem Funktionsaufruf/ einer Funktionsdeklaration oder in einer Zuweisung ist.
Das bedeutet: Der Kommentar beginnt mit dem ersten Semikolon ausserhalb eines Strings.Spoiler anzeigen
[autoit]Dim $aLines[4] = _
[/autoit] [autoit][/autoit] [autoit]
[ _
"$a = $b + $c ; Comment line 1", _
"Dim $s1 = 'some text; tiled with semicolon', $s2 = 'another text; also tiled with semicolon' ; Comment line 2 - semicolon as part of assignment", _
"_SomeFunctionCall('string parameter with ;', $anotherParam) ; Comment line 3 - semicolon as part parameter in an function call", _
"Func _AnotherFunction($param1=';', $param2=';', $param3=';') ; Comment line 4 - semicolon as default value in parameter of a function headline" _
]For $i = 0 To 3
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
ConsoleWrite('+> Line ' & $i+1 & ' full:' & @CRLF & '+>' & $aLines[$i] & @CRLF)
ConsoleWrite('!> without comment:' & @CRLF & '!>' & _LineStripComment($aLines[$i]) & @CRLF & @CRLF)
NextFunc _LineStripComment($_Line)
[/autoit] [autoit][/autoit] [autoit]
; == tile line by all included comment marker
Local $aPartsWithMarker = StringSplit($_Line, ';')
Local $sNoComment; == if no comment marker: return full line
[/autoit] [autoit][/autoit] [autoit]
If $aPartsWithMarker[0] = 0 Then Return $_Line; == check if string in part, if is'nt: following part(s) are comment
[/autoit]
For $i = 1 To $aPartsWithMarker[0]
If Not StringRegExp($aPartsWithMarker[$i], "('|\x22)") Then
If $i = 1 Then
Return StringStripWS($aPartsWithMarker[$i], 2)
Else
Return StringStripWS($sNoComment & $aPartsWithMarker[$i], 2)
EndIf
Else
; == check if next leftside string delimiter has uneven count
Local $iLen = StringLen($aPartsWithMarker[$i])
Local $fDetectDelim = False, $sStringDelim, $iDelimCount, $sCurr
For $j = $iLen To 1 Step -1
$sCurr = StringMid($aPartsWithMarker[$i], $j, 1)
If Not $fDetectDelim Then
If $sCurr = "'" Or $sCurr = '"' Then
$sStringDelim = $sCurr
$iDelimCount += 1
$fDetectDelim = True
EndIf
Else
If $sCurr = $sStringDelim Then $iDelimCount += 1
EndIf
Next
If Mod($iDelimCount, 2) Then
; == uneven count: so it masks the comment marker
$sNoComment &= $aPartsWithMarker[$i] & ';'
Else
; == even count: all following is comment
Return StringStripWS($sNoComment & $aPartsWithMarker[$i], 2)
EndIf
EndIf
Next
EndFunc ;==>_LineStripComment -
Wenn du irgendwas in Tabellenform darstellen willst - warum nicht?
Sehe keine Begründung, was dagegen sprechen sollte. Was den BB-Code betrifft hat das sicher nichts mit Tabellen als solchen zu tun, sondern mit dem Blödsinn, der sich damit anstellen ließ. -
zu1.
z.B. beim Arbeiten mit Dll-Aufrufen werden Daten in Strukturen gepackt. Kannst ja mal in meinem Dll-Tut (meine Signatur) lesen.zu2.
Wird nicht im Klartext gespeichert und ist sinnvollerweise für dich nicht zugänglich (SAM-Datei, wenn ich mich recht erinnere, speichert das ab)zu 3.
Kannst du vergessen, wird nur an deinem eigenen PC funktionieren. Bei mir ist z.B. jeglicher Autorun gesperrt. Firmen-PC sperren teilweise USB-Ports generell für Datenträger. -
Nicht alles muss einen Sinn haben um es zu verkaufen.

Fällt für mich unter die Kategorie: Dinge, die die Welt nicht braucht. Aber wenn es die Wirtschaft ankurbelt und Arbeitsplätze sichert: OK