Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi CNC Parsen (PChar ?) (https://www.delphipraxis.net/34663-cnc-parsen-pchar.html)

Darty 26. Nov 2004 08:40


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:
%%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
$
Mein erstes Ziel muss dann lauten das CNC Programm zu zerlegen.
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.

Kedariodakon 26. Nov 2004 08:44

Re: CNC Parsen (PChar ?)
 
:wiejetzt: Was sollen wir Zeigen? :gruebel:


Bye


Das is doch bestimmt eine Textdatei oder? Warum nicht nach Zeichen parsen???

Darty 26. Nov 2004 08:47

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 //

Kedariodakon 26. Nov 2004 09:00

Re: CNC Parsen (PChar ?)
 
Na einfach den String nach dem Werkzeug durchsuchen:

Delphi-Quellcode:
...
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;
...
:zwinker:


Machst dir eine Liste Mit allen Werkzeugen und durchsuchst dann halt jede Zeile mit der Werkzeugliste durch...

:cat:


Bye

Robert Marquardt 26. Nov 2004 11:36

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.

Kedariodakon 26. Nov 2004 11:47

Re: CNC Parsen (PChar ?)
 
Zitat:

Zitat von Robert Marquardt
Erst mal wuerde ich die ganze Datei in eine TStringList einlesen.
Von dort aus kann man dann die Zeilen viel einfacher analysieren.

Japs sollte er tun :zwinker:

Zitat:

Zitat von Robert Marquardt
Eine TStringList hat z. B. ein paar nuetzliche Methoden zum Suchen.

Wenne r sie Zerlegen will bringen die ihm aber nich so viel :roll:


Bye

Robert Marquardt 26. Nov 2004 12:06

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.

Darty 29. Nov 2004 10:33

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:

stoxx 29. Nov 2004 14:33

Re: CNC Parsen (PChar ?)
 
Zitat:

aber habe Denkanstösse dazu bekommen :)

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