![]() |
CNC Parsen (PChar ?)
Hi Leutz,
bin gerade dabei einen kleinen CNC Editor mit grafische Ausgabe zu programmieren. Auch soll ein Syntax Überprüfung stattfinden u.s.w. Der folgende Quelltext ist ein Beispiel für ein CNC Fräsprogramm.
Code:
Mein erstes Ziel muss dann lauten das CNC Programm zu zerlegen.
%%3000
X254.20Y134.30T1M31M31M31 X0.00Y0.00M50 X540.00Y421.30M90M30 X0.00Y0.00M50 X0.00Y190.00M50M30 X253.85Y134.65T0T2M31M31 X262.67Y143.47G1G42F6 X262.67Y158.02G1 X258.97Y158.02G1 X258.97Y173.28G1 X262.67Y173.28G1 X262.67Y205.02G1 X259.75Y205.02G1 X259.75Y207.58G2R1.28G42 X262.67Y207.58G1G42 X262.67Y242.02G1 X258.97Y242.02G1 X258.97Y257.28G1 X262.67Y257.28G1 X262.67Y277.83G1 X253.85Y286.65G1 X253.85Y286.65T0 X0.00Y0.00M50 X540.00Y421.30M90M30 X0.00Y0.00M50 X0.00Y190.00M50M30 X260.90Y159.95T0T3M31M31 X260.90Y171.35G1F12 X262.40Y171.35G1 X262.40Y159.95G1 X260.90Y243.95T0 X260.90Y255.35G1 X262.40Y255.35G1 X262.40Y243.95G1 X255.53Y288.33T0 X265.05Y278.81G1G42F8 X265.05Y142.48G1 X255.53Y132.97G1 X255.53Y132.97T0 X0.00Y0.00M50 X540.00Y421.30M90M30 X0.00Y0.00M50 X0.00Y190.00M50M30 X396.40Y125.00T0T4M31 X399.40Y128.00G1G42F15 X399.40Y293.30G1 X396.40Y296.30G1 X143.60Y296.30G1 X140.60Y293.30G1 X140.60Y293.30T0 X0.00Y0.00M50 X0.00Y190.00M50M30 X140.60Y128.00T0M31 X143.60Y125.00G1G42F15 X396.70Y125.00G1 X140.60Y293.60T0 X140.60Y131.00G1G42 X140.60Y127.70G11F2 X140.60Y127.70T0 X0.00Y0.00M50 X0.00Y190.00M50M30 M100,NVFRAES455 $ T01D0803 T02D-1005 T03D-2405 T04D-2405 $ Der Anfang muss immer "%%3000" stehen u.s.w. Ich hatte mich mal daraangemacht die Werkzeuge (T-Parameter) zu zerlegen und in einer Listview anzuzeigen. Brauche es später auch für die Grafische Anzeige u.s.w. das es getrennt wurde. Die Werkzeuge stehen immer zwischen den Zeichen "$" wie man es am Ende der Quelltext erkennen kann. Ich hatte versucht mit dem PChar zu arbeiten. Aber irgendwie steige ich da nicht richtig durch. Ich denke sobald ich das kann, wird die Restlichen Dingen wie Koordinaten u.s.w. im gleichen Verfahren ablaufen. Könnte jemand mir ein BeispielCode zeigen wie sowas funktionieren könnte? Danke schon mal für euer Hilfe. |
Re: CNC Parsen (PChar ?)
:wiejetzt: Was sollen wir Zeigen? :gruebel:
Bye Das is doch bestimmt eine Textdatei oder? Warum nicht nach Zeichen parsen??? |
Re: CNC Parsen (PChar ?)
Wie ich dazubringen kann
Die Zeile T01D2005 in einer z.B. ListView erste Spalte T01 (Heisst Werkzeug Nr 1) und in 2 Spalte D2005 (Heisst Durchmesser 2mm) eintragen lassen. // Edit: Ja eine Text Datei ist das // // Edit2: Eben das "wie" parsen hätte ich gerne eine Antwort // |
Re: CNC Parsen (PChar ?)
Na einfach den String nach dem Werkzeug durchsuchen:
Delphi-Quellcode:
:zwinker:
...
Var W: String; //Werkzeug Z: String; //Zu durchsuchende Zeile i: Integer; Begin W := 'T01'; Z := 'T01D2005' ... i := POS( W, Z ); If i <> 0 Then MessageDlg('Werkzeug is da ^^', mtInformation, [mbOK], 0) Else MessageDlg('Werkzeug is nicht da ^^', mtInformation, [mbOK], 0); ... End; ... Machst dir eine Liste Mit allen Werkzeugen und durchsuchst dann halt jede Zeile mit der Werkzeugliste durch... :cat: Bye |
Re: CNC Parsen (PChar ?)
Erst mal wuerde ich die ganze Datei in eine TStringList einlesen.
Von dort aus kann man dann die Zeilen viel einfacher analysieren. Eine TStringList hat z. B. ein paar nuetzliche Methoden zum Suchen. |
Re: CNC Parsen (PChar ?)
Zitat:
Zitat:
Bye |
Re: CNC Parsen (PChar ?)
Das Zerlegen wuerde ich in mehrere TStringList's machen. Fuer die Werkzeuge sogar in ein array of TStringList (jeweils ohne $ Zeilen).
Das eigentliche Programm geht in eine eigene TStringList (die %%3000 Zeile faellt dabei weg). Damit werden die Programmteile nun als eine Serie von TStringLists's repraesentiert bei denen jede Liste nur den eigentlichen Inhalt vorhaelt. Das nennt sich teile und herrsche :-) Jetzt kann man das gleiche Prinzip auf eventuelle Teile des Programms anwenden oder die Zeilen des Programms einzeln analysieren. Hinterher alles zusammenzusetzen ist dann sicher recht einfach. |
Re: CNC Parsen (PChar ?)
Danke euch beiden habe es umgestellt auf TStringlist und werde mal mich damit beschäftigen. Klar zerlegt ist dabeu noch nichts, aber habe Denkanstösse dazu bekommen :) Bis dann zur nächste Frage ..... Coming Soon .. :mrgreen:
|
Re: CNC Parsen (PChar ?)
Zitat:
schau Dir mal die Funktion stringreplace an .. Die Zeilen mit den Punkten willst ja bestimmt aufdröseln oder ? hiermal noch ein Denkanstoss
Code:
function GetStringNr(const aStr, delim: string; nr: integer): string;
begin with TStringList.Create do begin Text := StringReplace(aStr, delim, #13#10, [rfReplaceAll]); result := strings[nr - 1]; free; end; end; BSP
Code:
st := getstringnr(zeile,'.', 1);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz