Wobei bei FileExists aber nicht der unterschieden wird, ob es ein Verzeichnis oder eine Datei ist.
Es können z.B. Dateien ohne Endung oder Verzeichnisse, die einen Punkt enthalten, zu Verwechslungen werden.
Deswegen muss ggf mit FileGetAttrib überprüft werden, ob der Buchstabe "D" im Rückgebestring steht oder nicht.
Beiträge von Marthog
-
-
Arrays sind in C++ so eine Sache.
Die statischen Arrays sind beim compilen in der Größe bereits festgelegt.
hat immer 10 Elemente.
geht nicht.
Von einer Funktion aus lässt sich auf die Größe nicht zugreifen, dass liegt aber auch daran, dass als Parameter nur ein einzelner pointer auf das erste ELement übergeben wird.
Normalerweise verwendet man deswegen std::vector. Das ist eine Klasse, die unter anderem auch die Größe speichert.
-
EmptyDllCreator, gab es den nicht schon einmal vor einiger Zeit
Ja, gab es. Dieses Thread ist nämlich schon etwas älter. -
Herzlich willkommen.
Ich wollte aber noch darauf hinweisen, dass AutoIt nicht objektorientiert, sondern prozedural ist.
-
Ich brauchte irgendwann mal einen Namen und habe mir diesen hier ausgedacht. Das war gar kein so großes Problem.
-
Ich würde das aber trotzdem als ID und nicht als handle bezeichnen, einfach um Verwechslungen zu vermeiden, denn mit handle werden oft die aus der WinAPI z.B. HWND, HMODULE, HANDLE, HINSTANCE bzw. die entsprechenden AutoIt-Typen bezeichnet. Handles sind oft als pointer präsent, die IDs sind aber mehr so eine Art Array-indices.
-
In der AutoIt Referenz wird von ControlID gesprochen, deswegen würde ich das auch nicht als Handle bezeichnen, denn handles sind oft einfach nur pointer. Außerdem wäre dann die Bezeichnung GUICtrlGetHandle seltsam.
Ich würde $iMsg verwenden, weil das alles integer sind. -
Irgendwo gibts so einen Stammbaum für die einzelnen Musikstile.
Der muss doch riesig sein, wenn man bedenkt, was es schon alles für Metal-Stile gibt. http://mapofmetal.com
-
Ich höre eigentlich kaum elektronische Musik, aber E Nomine finde ich ganz gut. Beispiel
-
Ich weiß nicht, ob das überhaupt geht, in C++ ist das möglich, aber auch nur über plattformabhängige Wege, aber ob diese so selten benutzte Funktion überhaupt in der UDF umgesetzt wurde, bezweifel ich.
Deswegen empfehle ich die Methode, einen einzigartigen Fenstertitel (z.B. #hjhrjgrjlklwrj##5) zu setzten und über WinGetHandle an das Handle zu kommen.
[autoit]
Dann verwendeGUICtrlSendMsg($hWnd, $WM_SETICON, $ICON_BIG, $iconHandle)
[/autoit]zum Setzen des Icons.
Du kannst du mit _WinAPI_SetWindowLong einen neuen "Eventhandler" setzen, der beim Klick auf den Close-Button eine spezielle Funktion auslöst und bei allen anderen Events den Originalhandler aufruft.
Je nach dem, ob die UDF das zulässt, kannst du das Fenster auch als Child in ein AutoItfenster integrieren, aber ich finde die erste Methode besser.
-
Ich stimme euch auch zu, denn Sport sollte immer mit Bewegung und körperlicher Anstrengung zu tun haben.
Auch wenn man z.B. von Denksport spricht, finde ich den Begriff Sport komplett unangebracht, denn auch wenn es mental anstrengend ist, würde ich eher von Denkspielen oder Gedächtnistraining sprechen. -
Wenn schon mit deiner Methode, dann mit std::string::find.
-
-
-
-
Eine Menge CDs, darunter die ganze Reihe von Sabaton.
-
Grunsätzlich ist die Seite cplusplus.com sehr zu empfehlen, allerdings auf englisch und es wird eher auf Vollständigkeit statt auf Einfachheit geachtet. Dort findet man ein Tutorial, das wie gesagt für komplette Neueinsteiger wohl etwas zu unübersichtlich ist, aber besonders die Befehlsreferenz ist später beim Programmieren nicht mehr wegzudenken.
In C++ soll es sich lohnen, ein Buch zu kaufen, aber ich bin auch mit online-tutorials gut durchgekommen. Das Tutorial, das ich hatte ist inzwischen leider offline. Wenn du mit englisch gut klarkommst, scheint auch das hier ganz gut zu sein, zumindest wird das vom C+-Forum empfohlen:
Teil 1
Teil 2Allgemein hilft es immer, so viele Tutorials wie möglich zu machen, denn alle erklären unterschiedliches.
Für den Anfang empfehle ich dir, erstmal viel zu lernen, bevor du praktisch anfängst, richtige Programme zu schreiben. Und C++ ist auch anders als AutoIt. Man hat nicht nur viele Befehle und muss daraus den richtigen kennen, sondern sich die Lösung selber zusammenbasteln. Lass erstmal die Hände weg von allem, was etwas komplizierter ist, als die Tutorials, also keine externen Libraries außer der STL (C++-Standard-Library), keine Arbeit mit Dateisystemen und erst recht keine GUIs.
Ein häufiger Fehler, leider auch bei erfahrenen Programmieren und deswegen manchmal auch in Tutorials, ist das, das hauptsächlich C programmiert wird und nur ein paar Features von C++ übernommen werden. denn das führt zu unleserlichen und schlech wartbaren Programmcodes. -
-
Ich bevorzuge immer wenn es geht For .. In ..., denn:
- Keine Off-By-one Errors und sonstige Zugriffsverletzungen
- Man kann Elemente nicht versehentlich überschreiben
- Der Sinn ist leichter ersichtlich
- Ne ganze Ecke schneller als For In
- Man braucht den UBound sowieso oft in der Schleife, daher vorher berechnen und als Parameter übergeben.
Ich habe es gerade nachgemessen und keinen Geschwindigkeitsvorteil gefunden und UBound brauche ich oft auch nur ein einziges Mal pro Schleife.Allgemein bevorzuge ich in Programmiersprachen sogar, wenn nur foreach-Schleifen vorhanden sind und man dafür
So ist das in Python und das finde ich sehr übersichtlich, weil es so konsequent ist, und man in anderen Sprachen oft viel mehr Objekte als nur Arrays hat.
-
Nimm doch gleich GLSL. Das ist die Shadersprache von OpenGL.
-
Moin, auch!
Du musst erstmal verstehen, wie eine Skriptsprache im Kern funktioniert. Dafür würde ich dir NICHT dazu raten, bestimmte Dinge, wie Fernsteuerung von Fenstern zu lernen, sondern ersteinmal mit Rechnungen, Variablen, Schleifen und Arrays anzufangen. Das ist nämlich der Kern der Sprache und man sollte es ohne Nachzudenken benutzen können.
AutoIt habe ich allein durch das Lesen der Hilfe gelernt.
Ich habe einfach ziellos durch die Funktionsliste gescrollt, mir interessant klingende Funktionen angeschaut und dann aus dem Beispiel gelernt.Das ist, denke ich, für das Beste, aber man sollte damit erst nach den Grundlagen anfangen. Man sollte sich im Befehlssatz schon einigermaßen auskennen, damit man auch weiß, wo man suchen muss.
-
Am besten ist es, wenn du dafür aus der boost-library boost.filesystem verwendest. Das ist plattformunabhängig und recht einfach und wenn der Compiler noch kein C++11 unterstützt, hast du mit boost.regex den RegExp-Parser gleich dabei.
Allerdings macht es überhaupt keinen Sinn, das Skript zu konvertieren, denn WinAPI und Festplatte sind der Flaschenhals, und AutoIt wurde genau für Skripte wie dieses entworfen, C++ ist für andere Probleme.
Eine gute Aufgabe, die ich damals gemacht habe:
Programmiere einen Getränkeautomaten mit folgenden Funktionen:
- Preis pro Flasche auslesen
- Eine bestimmte Geldmenge einwerfen
- Knopf für Geld zurückgeben (auch Wechselgeld)
- Knopf zum Kaufen einer Flasche; dabei Rückmeldung ob erfolgreich oder nicht
- Auslesen, ob noch Flaschen im Automaten sind (aber nicht die Menge)Es kann beliebig viele Automaten geben, bei denen der Preis und die Anzahl an Flaschen nicht voneinander abhängt. Kleiner Hinweis dazu: Verwende Klassen.
Das ganze sollte ohne Libraries gelöst werden. Aus Testgründen kann natürlich eine zur Ein- und Ausgabe verwendet werden. -
Vielleicht eher wegen der Abwärtskompatibilität und nicht wegen der Grösse des Funktionsumfanges. Einige Applikationen starten nicht mehr, weil die Applikation die Arbeit auf einer unbekannten Windows-Version verweigert.Das ist die offizielle Begründung. Kein Programmierer schreibt für ein normales Programm eine extra Abfrage, weil die meisten Programme vermutlich auch auf der nächsten Windowsversion laufen werden. Ausnahmen hierbei sind die Treiber, aber von einer Treiberfirma erwarte ich, dass sie es schafft, mehrere Seriennummern zu unterstützen.
Meiner Meinung nach ist Windows 8 kompletter für Desktop-PCs Schwachsinn, denn eine der größten Stärken von Windows ist die komplett aufwärtskompatible API, zu der unter anderem das alte Fenstersystem gehört. Selbst MFC und .NET-GUIs sind im Grunde eine erweiterte Form der alten und man kann dadurch auch andere Controls (beispielweise von Irrlicht) in die GUIs einbinden. Mit den Modern-UI-apps (früher Metro) wird diese Kontinuität wohl unterbrochen. Außerdem kann man keine OpenGL-GUIs in die Metro-apps einbinden, ist also zu DirectX gezwungen.
Einer der größten Störfaktoren ist für mich aber: Um Modern-UI durchzusetzen, kann man mit der kostenlosen Version von Microsoft Visual C++ keine Desktopanwendung mehr erstellen. Die alte Version ist bisher mein bevorzugter Compiler, aber unterstützt C++11 nur teilweise.