Ein bisschen kurz aber willkommen im Forum!
Beiträge von alpines
-
-
Noch ein Tipp, wenn die Code-Snippets bisschen länger sind dann pack sie doch bitte in Spoiler.
Das restarten einer GUI hab ich dir doch schon erklärt, aber hier Schritt für Schritt.
Nachdem der User das benutzt hat, bzw. auf den Button gedrückt hat. Soll der erstmal das machen was dein Script machen soll und danach soll folgendes passieren:
Erstmal die GUI mit GUISetState(@SW_HIDE) verstecken.
Dann GUICtrlSetData auf alle Controls anwenden und die Werte auf die setzen die du haben möchtest, bsp.-weise: "".
Zum Schluss wieder anzeigen mit GUISetState(@SW_SHOW). -
Ein Tipp, auch wenn dir das nicht sehr viel helfen wird: Initialisiere die GUI nur 1x.
[autoit]
Du kannst sie mitGUISetState(@SW_HIDE)
[/autoit]verstecken und mit
[autoit]GUISetState(@SW_SHOW)
[/autoit]anzeigen.
Sonst hast du nämlich eine Rekursion drinne und nach etwa 1900 mal aufrufen der _main()-Funktion beendet sich das Programm automatisch damit das Rekursionslevel erreicht ist.
-
Vielleicht ist das auch nur von Code-Schnipseln zusammengewürfelt.
Poste bitte das ganze Script damit wir das besser sehen und diesmal bitte per AutoIt-Code nicht Quellcode! -
Wenn du es einfach nur abschneiden möchtest dann mach es doch so
[autoit]
[/autoit][autoit][/autoit][autoit]
$hFile = FileOpen(".\\Datei.xml")
$sXML = FileRead($hFile)
FileClose($hFile)FileDelete(".\\Datei.xml")
[/autoit]
FileWrite(".\\Datei.xml", StringTrimRight(StringTrimLeft($sXML, StringInStr($sXML, "<body>", 1, 1)), StringInStr($sXML, "</body>", 1, -1)))
Das Zeug das du brauchst wie z.B. die Ordnerstrukturen die kannst du doch ganz leicht selber aus der XML auslesen. -
Freut mich das ich helfen konnte
-
Eventuell kompilieren und per Kompabilitätsmodus starten?
-
Soweit ich weiß ist doch Assembler prozesserabhängig und ist auf jeder CPU verschieden?
Desweiteren würde ein ObjT2Assembler Interpreter nur auf einem emulierten Mikroprozessor in Windows funktionieren ansonsten muss man das auf einer Diskette haben und die booten. -
Ich denke Make meint das richtige aber du kannst den Befehl nicht in eine Variable speichern, zumindest nicht die Funktion.
Das einzige was du von einer Funktion abgreifen kannst ist der Return. -
Eventuell
[autoit]
[/autoit]
#RequireAdminvergessen?
-
Das worüber Make sich beschwert ist vermutlich das der Konverter, konvertiert aber nicht kompiliert.
Wenn der Konverter in die Sprache übersetzen würde und kompilieren würde dann ist Make zufrieden. -
Nur als Tipp, damit deine Thread nicht überladen sind.
Du kannst zu große Links auf http://www.pastebin.com/ hochladen. -
@Make-Grafik, wenn sich jemand mit dem Syntax von C++ nicht anfreunden kann, dann steht ihm eine Alternative zu.
Zugegeben das ist zwar ein bisschen unnötig aber trotzdem. -
Selbst wenn es nur ein Konverter ist, ich finde die Grundidee sehr gut. Die Umsetzung muss stimmen und dann wird das großartig.
Bei einem Konverter von ObjT2C++ würden sich vielleicht andere Leute freuen, da sie den Unterschied vergleichen können (der Konverter kann auch in AutoIt geschrieben sein).Der Code würde dann schnell, wirklich sehr schnell laufen. Selbst wenn es nur die minimale von C++ ist, die Konsolenbefehle sind sowas von ausreichend.
Während mein PC knapp ~25000 Primzahlen (Spektrum 2-unendlich) berechnen kann, schafft AutoIt grade einmal 1000. -
Schleifen unterbrechen kannst du mit
[autoit]ExitLoop
[/autoit] -
Freut mich das ich helfen kann!
-
Hier ist noch ein weiterer Tipp, wenn du im 1. Thread eine Changelog führst mit was für Sachen in welchen Versionen dazugekommen sind dann wird dir niemand deswegen böse werden.
Und noch was: Wenn du in C++ die grundlegenden Sachen der Console kannst dann kannst du die Zwischeninstanz AutoIt vergessen und gleich in C++ vom Interpreter konvertieren lassen.Ich schreib das ganze was ich per PN an Robin98 gesendet hab mal hier rein, damit auch andere einen Blick drauf werfen können!
ZitatDu meinst ja in deiner Sprache das man oben Die Zeilen + 2 oder so schreiben soll.
[autoit]
Wieso machst du das nicht so, das wenn du wirklich die Zeilen vom Script brauchst die Anzahle der @CRLFs zählst.
Ein @CRLF ist nichts mehr als ein Zeilenumbruch.;--------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]
$sString = "Hallo1234"
$sString = StringReplace($sString, "H", "h")
$sString = StringReplace($sString, "a", "A")
;--------------------------------------------------------#cs
[/autoit] [autoit][/autoit] [autoit]
Zwischen den ;---- befinden sich 3 Zeilen.
Hinter dem "Hallo1234" ist ein Zeilenumbruch oder auch @CRLF (Carriage Return Line Feed) genannt.
Hinter dem ,"h") ist ein @CRLF
und hinter dem , "A") ist ein @CRLF.Somit siehst du das das Script 3 Zeilen hat. Wenn es z.B. so ist:
[/autoit] [autoit][/autoit] [autoit]
#ce;--------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]
$sString = "Hallo1234"
$sString = StringReplace($sString, "H", "h")
$sString = StringReplace($sString, "a", "A");--------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]#cs
[/autoit]
Dann siehst du, das da 4 Zeilen sind, und wenn dir das nicht passt schaust du ob in dieser Zeile was ist.
Wie macht man das? Du schneidest alles was sich links von dem letzen @CRLF befindet weg (so das nur die letzte Zeile bleibt) oder guckst mit _StringBetween ob zwischen zwei @CRLFs was stehen und löscht die Zeile.
Ich weiß nicht ob das in deinem Interpreter drinne ist aber du könntest überprüfen, wenn ein do{ drinne ist, ob dann ein do} drinne ist.
#ce
Bei deinem Interpreter ist noch SEHR viel zu machen, Syntaxfehlererkennung etc...
Viel Spaß und viel Erfolg von mir! -
@James1337, der einizige Grund warum er von AutoIt abhängig ist, bzw. den Interpreter in AutoIt geschrieben hat ist, weil er nicht weiß wie er aus seinem Code eine lauffähige Win32-Anwendungs macht.
Wenn du es weißt kannst du ihm ja helfen, er will versuchen ObjT auf ein Level mit AutoIt zu bringen, das kein zweifacher Interpreter notwendig ist sondern nur der für ObjT2Win32 so wie für AutoIt2Win32.Das hat er auch bereits schon erwähnt.
-
Ich freu mich auf die weitere Entwicklung deines Projektes.
Mal schauen was es mit sich bringt! -
Du kannst das ja so machen (bin mir nicht ganz sicher ob das schon erwähnt wurde.)
Du kannst prüfen ob sich die Pixel langsam ändern oder rapide, bei rapide wäre das z.B. eine Person oder ein Auto und bei langsam wäre das das Wetter.