C++ Programierung, suche etwas Unterstützung

  • Hi Leuz 8-)

    Ich hab vor einiger Zeit ja mal geschrieben dass ich ne Möglichkeit suche Textdateien automatisiert zu ändern . . . .
    Da ich da leider keine Vernünftige Möglichkeit gefunden habe, bin ich grad dabei mir die Programiersprache C++ beizubringen !! Läuft soweit ganz gut. Wenn es kein Programm gibt dann schreibt man´s sich halt selbst :D

    Hintergrund ist, dass ich mir einen Postprozessor schreiben möchte, der ein normales DIN/ISO NC-Programm in ein Steuerungs Kompatibles Format umwandelt (Heidenhain iTNC530) !!

    Also NC-Programm (ist im Prinzip eine einfache Textdatei) zeilenweise einlesen, analysieren, evtl Koordinaten umrechnen und dann wieder verändert in eine neue Datei schreiben !!

    Also wenn hier ein paar Ahnung von C++ haben, wär´s schön wenn ich hier von Zeit zu Zeit mal etwas Hilfe bekommen könnte !! In Diversen C++ Foren find ich mich irgendwie net so zurecht !! Kerze

    Gruß Andi

    Audi A3 (8P) 2.0 FSI, S-Line Sportpaket plus, Akoyasilber, Xenon, Klima, Concert mit BOSE Soundsystem & Bluetooth FSE (Parrot CK3000), S3 Alupedale + Fu߸stütze, Oettinger Seitenschweller, & Heck, S-Line Dachspoiler, S3 Frontschürze, Beleuchteter S3 Schaltknauf

  • Nächsten Monat fand ich meinen Techniker in Informatik an, da ist der hauptbestandteil auch Programmieren.

    Musst dich noch etwas gedulden ;)

  • Hi Chris !!

    Also, bin wie gesagt noch Anfänger 8-| Bin noch dabei ein Paar Bücher durchzukauen !! Hab mir jetzt mal ein Windows GUI gebastelt, jetzt fang ich mal an den Cuellcode zu schreiben !!

    Ich Arbeite mit Microsoft Visual C++ Express !!

    ==== 1. ====

    Ich muss eine Datei öffnen und diese dann Zeilenweise auswerten, die zeile schaut ungefähr so aus:

    N142X-342765Y31357Z36970G00

    und diese muss ich in verschiedene Bestandteile Zerlegen

    N142 ist unwichtig

    X-342765 soll als zahl ohne X in der Variable double X abgelegt werden
    Y31357 als double in der Variable Y
    Z36970 als double in der Variable Z
    G00 soll in einem INT als 0 gespeichert werden

    Es gibt dann noch G01, diese dann entsprechend als 1

    Nachdem die Zeile zerlegt und entsprechend zugewiesen ist wird diese verändert (koordinaten umgerechnet) und dann in eine neue Datei geschrieben. Wenn die Zeile abgeschlossen ist kommt die nächste dran !!

    und ich hab momentag keine ahnung wie ich die Zeile in verschiedene datentypen zerlegen kann. es ist leider auch so dass jede Zeile unterschiedlich lang ist und manchmal verschiedene koordinaten fehlen. Das Programm muss also erkennen um welche koordinate (X,Y oder Z) es sich handelt und den Zahlenwert in die entsprechende Variable schreiben


    ==== 2. ====

    Wie kann ich jetzt den Programmcode in ein GUI integrieren ?? Kann ich beides unabhängig voneinander erstellen und dann später die Button´s und Felder mit den entsprechenden Funktionen verknüpfen *blödfrag* 8-|


    Hab mir ein Buch bestellt, das die Erstellung von GUI´s mit Visual C++ Express genauer beschreibt, kommt aber erst nächste Woche !!


    Das wichtigste ist aber erstmal wie ich die Zeile auseinanderpflücken kann, der rest meines Fragenkatalog´s komm dann noch :D


    Ich hoff dass ist jetzt nicht zuviel auf einmal Kerze


    Gruß Andi

    Audi A3 (8P) 2.0 FSI, S-Line Sportpaket plus, Akoyasilber, Xenon, Klima, Concert mit BOSE Soundsystem & Bluetooth FSE (Parrot CK3000), S3 Alupedale + Fu߸stütze, Oettinger Seitenschweller, & Heck, S-Line Dachspoiler, S3 Frontschürze, Beleuchteter S3 Schaltknauf

  • So, der GUI - Entwurf wäre mal fertig !!

    So soll´s ungefähr ausschauen !!


    Audi A3 (8P) 2.0 FSI, S-Line Sportpaket plus, Akoyasilber, Xenon, Klima, Concert mit BOSE Soundsystem & Bluetooth FSE (Parrot CK3000), S3 Alupedale + Fu߸stütze, Oettinger Seitenschweller, & Heck, S-Line Dachspoiler, S3 Frontschürze, Beleuchteter S3 Schaltknauf

  • Das ist ja der Grund warum ich´s selbst Programieren möchte,

    Wir ham uns ein einfachen Konverter machen lassen, der einfach die Koordinaten von 1000stel in ganze mm umrechnet, und das Teil hat 500 Euro gekostet,

    Wenn ich jetzt so sachen drinhaben will wie die "Programmparameter ändern" dann wird´s erst richtig teuer, und wenn mal was angepasst werden muss, darf man auch wieder zahlen !! Deswegen lern ich´s lieber selbst, und wenn an der Maschine mal was nicht passt, setz ich mich ins Büro und passe den Quellcode entsprechend an und fertig !!

    Hättest du ein Tipp wie ich die Programzeile entsprechend aufteilen kann ??

    Gruß Andi

    Audi A3 (8P) 2.0 FSI, S-Line Sportpaket plus, Akoyasilber, Xenon, Klima, Concert mit BOSE Soundsystem & Bluetooth FSE (Parrot CK3000), S3 Alupedale + Fu߸stütze, Oettinger Seitenschweller, & Heck, S-Line Dachspoiler, S3 Frontschürze, Beleuchteter S3 Schaltknauf

  • So...
    Natürlich kannst du bei jedem Button drücken, eigentlich bei jeder Aktion... Auch der User nur seine Maus bewegt interagieren!
    Ich würde erstmal wirklich rumspielen. Dir Funktionen raus suchen zum Datei lesen und schreiben.. erstmal nur wirklich rumspielen und viele Sachen ausprobieren, die dir in den Sinn kommen! (Eben learning by doing).

    Es bringt nichts, wenn du versuchst sofort das Programm zu schreiben, da es sonst zu.. wie soll ich sagen.. kurzsichtig wird :)

    Dann solltest du dich mit Formatumwandlungen.. Stringfunktionen etc auseinandersetzen (So kannst du den Text easy nach deinen Anforderungen später zerlegen)

    Bei dir, denke ich mal, ganz wichtig sind klare Aufteilungen in Klassen. (Ist immer wichtig)
    Daher Module die bestimmte ecken übernehmen. Dies macht dein Programm übersichtlich und ausbaufähig!
    Also mit Klassen, deren Inztanzierung, mit globalen und lokalen Variablen auseindersetzen.

    Die Ausgabe von Debuginformationen usw. ist auch wichtig, damit du alles kontrollieren kannst.

    Am Ende solltest du nur die Forms und eine oder 2 Klassen haben.
    Die Forms sollten nur die Interaktion in der Form selber kontrollieren und sich um die Klassen "kümmern"...

    Hoffe ich konnte dir helfen.

    Grüße
    Miles

    *hierkommtbaldwiederderdsgsmileyrein!*

  • So, ich bin jetzt beim Kapitel "String Manipulation"

    Es gibt da die Methode find() mit der ich einen bestimmten Text innerhalb eines Strings suchen kann, und diese Position des Textes als INT zurück gibt.

    So wie ich das jetzt verstanden hab suche ich jetzt den Text X was von mir aus die Position 4 zurück liefert, dann such ich den Text Y was die Position 12 liefert, jetzt schneide ich den Text von Position 5 bis 11 aus und speichere diese als double in der varianle "X_koordinate" ??

    Bin ich da auf dem richtigen weg ??

    Audi A3 (8P) 2.0 FSI, S-Line Sportpaket plus, Akoyasilber, Xenon, Klima, Concert mit BOSE Soundsystem & Bluetooth FSE (Parrot CK3000), S3 Alupedale + Fu߸stütze, Oettinger Seitenschweller, & Heck, S-Line Dachspoiler, S3 Frontschürze, Beleuchteter S3 Schaltknauf

  • ja, das ist perfekt!
    Würde aber ein struct nehmen!
    also quasi:

    struct Daten {
    koord_x;
    koord_y;
    };

    (Hoffe, das war der richtige Syntax ;))
    Structs machen das alles nochmal übersichtlicher.
    Kannst du dann Quasi später mit Daten::koord_x; abrufen etc.

    *hierkommtbaldwiederderdsgsmileyrein!*

  • ich hab´s jetzt so gelöst,
    funktioniert eigentlich ganz gut so

    Audi A3 (8P) 2.0 FSI, S-Line Sportpaket plus, Akoyasilber, Xenon, Klima, Concert mit BOSE Soundsystem & Bluetooth FSE (Parrot CK3000), S3 Alupedale + Fu߸stütze, Oettinger Seitenschweller, & Heck, S-Line Dachspoiler, S3 Frontschürze, Beleuchteter S3 Schaltknauf

  • Ja, sieht ja schon super aus!
    Gibt sicher Sachen die man bissl geschickter programmieren kann, aber ist schon gut.
    Aber das kannst du noch im nachhinein beim "refactoring" machen :D

    Sonst kann es trotz Kommentaren schnell passieren, dass man die Übersicht verliert oder es wird irgendwann zu komplex.

    Grüße
    Miles

    *hierkommtbaldwiederderdsgsmileyrein!*

  • EDIT: Gelöscht !! Hat sich erledigt 8-)

    Audi A3 (8P) 2.0 FSI, S-Line Sportpaket plus, Akoyasilber, Xenon, Klima, Concert mit BOSE Soundsystem & Bluetooth FSE (Parrot CK3000), S3 Alupedale + Fu߸stütze, Oettinger Seitenschweller, & Heck, S-Line Dachspoiler, S3 Frontschürze, Beleuchteter S3 Schaltknauf

  • So, hab mein Programm jetzt soweit fertig !!!

    Hab jetzt aber das Problem dass es unter Windows NT nicht läuft, kommen eine Reihe von Fehlern ;(

    Programiert hab ich das ganze in Microsoft Visual C++ 2005 Express unter Windows XP
    Und in der Firma muss ich´s jetzt auf der Maschine unter Windows NT 4.0 zum laufen bringen :-o

    Ich weis dass man einfach nur in den Compiler Settings was umstellen muss, weis aber nicht genau was !!

    Wäre schön wenn mir jemand ein Tipp geben könnte !!


    Gruß Andi

    Audi A3 (8P) 2.0 FSI, S-Line Sportpaket plus, Akoyasilber, Xenon, Klima, Concert mit BOSE Soundsystem & Bluetooth FSE (Parrot CK3000), S3 Alupedale + Fu߸stütze, Oettinger Seitenschweller, & Heck, S-Line Dachspoiler, S3 Frontschürze, Beleuchteter S3 Schaltknauf

  • Welche Fehler kommen denn?

    Ich gehe mal davon aus, dass Du das Programm dynamisch gelinkt hast, und das Proggie jetzt die aktuellsten DLLs voraussetzt (die unter NT nicht da sind).

    Am besten statisch linken und ggf. die #defines in stdafx.h anpassen (_WIN32_WINNT und Konsorten nicht höher als 0x0400 setzen).

    Zum statischen Linken unter "C/C++ -> Code Generation -> Runtime Library" nix auswählen, was "DLL" enthält. Falls Du MFC oder ATL verwendest, unter "General" bei "Use of MFC" bzw. "Use of ATL" ebenfalls jeweils "Static Library" auswählen.

    Kannst mir auch 'ne Mail schicken (ich programmiere beruflich C/C++/C#/VB/Python/Java - was Du willst ;)

    Edit: Ggf. heissen die Settings bei VC Express etwas anders, und ob da überhaupt statisches Linken möglich ist, weiss ich nicht sicher; wir verwenden VC 2003 ("Enterprise Architect").

    (...Die Express-Version ist doch eigentlich auch nur für private Zwecke lizenziert... :-o devilteufel)

    Gruß
    Pete

    A3 SB 125kW TDI DSG (2WD only)
    A5 Coupé quattro, 3.0 TDI, S-Tronic

  • Zitat

    Original geschrieben von Mysterikum

    Nächsten Monat fand ich meinen Techniker in Informatik an, da ist der hauptbestandteil auch Programmieren.

    Musst dich noch etwas gedulden ;)

    Darf ich mal fragen wann und wo? Machst du den staatl. Informatiker?

    Beim DAA Technikum?

    Gruß Scoty81

    PS: Sorry fürs Offtopic :)

    Die Seite rund um Audi und Skoda
    Interessante Testberichte, Bilder und Workshops auf http://www.scoty.de

    [color=#000000]VW Passat Variant 2.0 TDI 125KW[/color]
    [color=#000000]VW High Up! 1.0 55KW [/color]

  • @ TDI-Pete


    Genau, da kommt ne Stange von Fehlern dass einige DLL´s fehlen usw...

    Schön zu wissen dass wir ein C++ Profi im Forum haben, bin selbst noch blutiger Anfänger und versuch mir das Programieren grad selbst beizubringen, mit ner Reihe von Büchern usw..

    Wenn ich noch fragen hab werd ich auf dich zukommen !!!

    Gruß Andi

    Audi A3 (8P) 2.0 FSI, S-Line Sportpaket plus, Akoyasilber, Xenon, Klima, Concert mit BOSE Soundsystem & Bluetooth FSE (Parrot CK3000), S3 Alupedale + Fu߸stütze, Oettinger Seitenschweller, & Heck, S-Line Dachspoiler, S3 Frontschürze, Beleuchteter S3 Schaltknauf

  • Welche Entwicklungsumgebung empfiehlt ihr für C Programmierung ?

    In der Schule benutzen mir den Borland Builder, den find ich total beschissen von der Benutzerführung.

    Hab ja ein Abo von Microsoft bekommen, am liebsten wäre mir etwas von denen :D

  • Wer mehr auf OpenSource steht, sollte sich mal die GNU-Compiler-Collection anschauen, für Windows speziell die MinGW-Variante.

    Für GUIs gibt's wxWidgets und ein gutes All-In-One-Paket ist wxDev-C++: http://wxdsgn.sourceforge.net/

    Im Gegensatz zur MFC gibt's da wenigstens noch Layout-Klassen für's GUI und das ganze ist plattform-übergreifend, d.h. mit etwas gutem Willen compiliert das Programm dann auch bspw. unter Linux.

    Natürlich kann man dann auch gleich unter Java oder C#/Mono programmieren, aber für den C++-Liebhaber ist das natürlich nix. :D

    Gruß
    Pete

    A3 SB 125kW TDI DSG (2WD only)
    A5 Coupé quattro, 3.0 TDI, S-Tronic

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!