RichEdit Text bearbeiten...ich verzweifel



  • Hallo Leute,

    ich hab schon so viel probiert...ich schaffs nich!

    Problem: ich hab ne Datei, die ein spezielles format hat, und die soll bearbeitet werden!

    Datei sieht so aus
    Bearbeitungsschritte kommentiere ich in datei:

    0 BEGIN PGM TEST MM
    1 ; DATEI : TEST.h
    2 ; UNDEFINIERT D=0.00
    3 ; WANDSTAERKE=0.00 AUFMASS=0.00 ZUSTELLUNG=0.00 PENDELN SPITZE
    4 TOOL CALL 0 Z S0
    5 CYCL DEF 7.0 NULLPUNKT
    6 CYCL DEF 7.1 X+0,000
    7 CYCL DEF 7.2 Y+0,000
    8 CYCL DEF 7.3 Z+0,000
    9 CYCL DEF 8.0 SPIEGELN
    10 CYCL DEF 8.1
    11 CYCL DEF 10.0 DREHUNG
    12 CYCL DEF 10.1 ROT +0,000
    13 CYCL DEF 11.0 MASSFAKTOR
    14 CYCL DEF 11.1 SCL 1,000
    15 M112 T0.05 A15    //ab hier soll jede 2 Zeile gelöscht werden
    16 L X+240.000 Y+100.000 Z+0.000 F0 M03
    17 L X+240.000 Y+100.000 Z+40.000
    18 L X+254.000 Y+100.000 Z+0.000
    19 L X+254.000 Y+100.000 Z+40.000
    20 L X+268.000 Y+100.000 Z+0.000
    21 L X+268.000 Y+100.000 Z+40.000
    22 L X+282.000 Y+100.000 Z+0.000
    23 L X+282.000 Y+100.000 Z+40.000
    24 L X+296.000 Y+100.000 Z+0.000
    25 L X+296.000 Y+100.000 Z+40.000
    26 L X+310.000 Y+100.000 Z+0.000
    27 L X+310.000 Y+100.000 Z+40.000
    28 L X+324.000 Y+100.000 Z+0.000
    29 L X+324.000 Y+100.000 Z+40.000
    30 L X+338.000 Y+100.000 Z+0.000
    31 L X+338.000 Y+100.000 Z+40.000
    32 L X+352.000 Y+100.000 Z+0.000
    33 L X+352.000 Y+100.000 Z+40.000
    34 L X+366.000 Y+100.000 Z+0.000
    35 L X+366.000 Y+100.000 Z+40.000
    36 L X+380.000 Y+100.000 Z+0.000
    37 L X+380.000 Y+100.000 Z+40.000
    38 L X+394.000 Y+100.000 Z+0.000
    39 L X+394.000 Y+100.000 Z+40.000
    40 L X+408.000 Y+100.000 Z+0.000
    41 L X+408.000 Y+100.000 Z+40.000
    42 L X+422.000 Y+100.000 Z+0.000
    43 L X+422.000 Y+100.000 Z+40.000
    44 L X+436.000 Y+100.000 Z+0.000
    45 L X+436.000 Y+100.000 Z+40.000
    46 L X+450.000 Y+100.000 Z+0.000
    47 L X+450.000 Y+100.000 Z+40.000
    48 M113                         //soll stehen bleiben
    15 M112 T0.05 A15               //das auch
    16 L X+240.000 Y+100.000 Z+0.000 F0 M03  //ab hier wieder jede 2te löschen
    17 L X+240.000 Y+100.000 Z+40.000
    18 L X+254.000 Y+100.000 Z+0.000
    19 L X+254.000 Y+100.000 Z+40.000
    20 L X+268.000 Y+100.000 Z+0.000
    21 L X+268.000 Y+100.000 Z+40.000
    22 L X+282.000 Y+100.000 Z+0.000
    23 L X+282.000 Y+100.000 Z+40.000
    24 L X+296.000 Y+100.000 Z+0.000
    25 L X+296.000 Y+100.000 Z+40.000
    26 L X+310.000 Y+100.000 Z+0.000
    27 L X+310.000 Y+100.000 Z+40.000
    28 L X+324.000 Y+100.000 Z+0.000
    29 L X+324.000 Y+100.000 Z+40.000
    30 L X+338.000 Y+100.000 Z+0.000
    31 L X+338.000 Y+100.000 Z+40.000
    32 L X+352.000 Y+100.000 Z+0.000
    33 L X+352.000 Y+100.000 Z+40.000
    34 L X+366.000 Y+100.000 Z+0.000
    35 L X+366.000 Y+100.000 Z+40.000
    36 L X+380.000 Y+100.000 Z+0.000
    37 L X+380.000 Y+100.000 Z+40.000
    38 L X+394.000 Y+100.000 Z+0.000
    39 L X+394.000 Y+100.000 Z+40.000
    40 L X+408.000 Y+100.000 Z+0.000
    41 L X+408.000 Y+100.000 Z+40.000
    42 L X+422.000 Y+100.000 Z+0.000
    43 L X+422.000 Y+100.000 Z+40.000
    44 L X+436.000 Y+100.000 Z+0.000
    45 L X+436.000 Y+100.000 Z+40.000
    46 L X+450.000 Y+100.000 Z+0.000
    47 L X+450.000 Y+100.000 Z+40.000
    48 M113        //ab hier alles stehen bleiben
    49 M30
    50 END PGM TEST MM
    

    will keinen code, nur mal ne idee!
    Die andren bekomm ich hin, nur die nich!



  • wie oft willst du denn das noch erklärt bekommen und wieder nicht verstehen?

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-123003-and-highlight-is-.html
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-123014-and-highlight-is-.html
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-123124-and-highlight-is-.html

    woran scheitert es denn?
    schreibt doch mal in worten auf, wie das programm deiner meinung nach arbeiten soll.

    solang dateiende nicht erreicht
      lese zeile aus datei
    
    // ... ab hier du
    


  • ich mach da mal 3 kleine beispieldateien, die zeigen sollen

    Datei 1 (funktioniert schon)

    0 BEGIN PGM TEST MM
    1 ; DATEI : TEST.h
    2 ; UNDEFINIERT D=0.00
    3 ; WANDSTAERKE=0.00 AUFMASS=0.00 ZUSTELLUNG=0.00 PENDELN SPITZE
    4 TOOL CALL 0 Z S0
    5 CYCL DEF 7.0 NULLPUNKT
    6 CYCL DEF 7.1 X+0,000
    7 CYCL DEF 7.2 Y+0,000
    8 CYCL DEF 7.3 Z+0,000
    9 CYCL DEF 8.0 SPIEGELN
    10 CYCL DEF 8.1
    11 CYCL DEF 10.0 DREHUNG
    12 CYCL DEF 10.1 ROT +0,000
    13 CYCL DEF 11.0 MASSFAKTOR
    14 CYCL DEF 11.1 SCL 1,000
    15 M112 T0.05 A15                    //ab hier jede 2te zeile löschen
    16 L X+240.000 Y+100.000 Z+0.000 F0 M03   //soll stehen bleiben
    17 L X+240.000 Y+100.000 Z+40.000         //soll gelöscht werden
    18 L X+254.000 Y+100.000 Z+0.000          //soll stehen bleiben
    19 L X+254.000 Y+100.000 Z+40.000         //...
    20 L X+268.000 Y+100.000 Z+0.000
    21 L X+268.000 Y+100.000 Z+40.000
    22 L X+282.000 Y+100.000 Z+0.000
    23 L X+282.000 Y+100.000 Z+40.000
    24 L X+296.000 Y+100.000 Z+0.000
    25 M113                              //hier wird Ende der Bahn markiert,muss stehen bleiben(danach KÖNNTE es aber weitergehen, wie unten gezeigt wird in Datei2)
    26 M30                               //hier wird Ende der Datei markiert
    27 END PGM TEST MM
    

    Datei 2 (funktioniert bis zur ersten "Trennmarke", danach macht er mist)

    0 BEGIN PGM TEST MM
    1 ; DATEI : TEST.h
    2 ; UNDEFINIERT D=0.00
    3 ; WANDSTAERKE=0.00 AUFMASS=0.00 ZUSTELLUNG=0.00 PENDELN SPITZE
    4 TOOL CALL 0 Z S0
    5 CYCL DEF 7.0 NULLPUNKT
    6 CYCL DEF 7.1 X+0,000
    7 CYCL DEF 7.2 Y+0,000
    8 CYCL DEF 7.3 Z+0,000
    9 CYCL DEF 8.0 SPIEGELN
    10 CYCL DEF 8.1
    11 CYCL DEF 10.0 DREHUNG
    12 CYCL DEF 10.1 ROT +0,000
    13 CYCL DEF 11.0 MASSFAKTOR
    14 CYCL DEF 11.1 SCL 1,000
    15 M112 T0.05 A15                           //wieder ab hier löschen jede 2te zeile
    16 L X+240.000 Y+100.000 Z+0.000 F0 M03     //bleiben
    17 L X+240.000 Y+100.000 Z+40.000           //löschen
    18 L X+254.000 Y+100.000 Z+0.000            //bleiben
    19 L X+254.000 Y+100.000 Z+40.000           //...
    20 L X+268.000 Y+100.000 Z+0.000
    21 L X+268.000 Y+100.000 Z+40.000
    22 L X+282.000 Y+100.000 Z+0.000 
    23 M113                                     //wieder bis hierher, ende der bahn
    24 M112 T0.05 A15                           //aber da neue bahn folgt, wieder anfangen
    25 L X+240.000 Y+100.000 Z+0.000 F0 M03     //bleiben
    26 L X+240.000 Y+100.000 Z+40.000           //löschen
    27 L X+254.000 Y+100.000 Z+0.000            //...
    28 L X+254.000 Y+100.000 Z+40.000
    29 L X+268.000 Y+100.000 Z+0.000
    30 L X+268.000 Y+100.000 Z+40.000
    31 L X+282.000 Y+100.000 Z+0.000
    32 M113                                     //aufhören, ende der bahn
    33 M30                                      //ende der datei
    34 END PGM TEST MM
    

    Datei 3 (hab so eine noch nicht gemacht, könnte aber auch vorkommen)

    0 BEGIN PGM TEST MM
    1 ; DATEI : TEST.h
    2 ; UNDEFINIERT D=0.00
    3 ; WANDSTAERKE=0.00 AUFMASS=0.00 ZUSTELLUNG=0.00 PENDELN SPITZE
    4 TOOL CALL 0 Z S0
    5 CYCL DEF 7.0 NULLPUNKT
    6 CYCL DEF 7.1 X+0,000
    7 CYCL DEF 7.2 Y+0,000
    8 CYCL DEF 7.3 Z+0,000
    9 CYCL DEF 8.0 SPIEGELN
    10 CYCL DEF 8.1
    11 CYCL DEF 10.0 DREHUNG
    12 CYCL DEF 10.1 ROT +0,000
    13 CYCL DEF 11.0 MASSFAKTOR
    14 CYCL DEF 11.1 SCL 1,000
    15 M112 T0.05 A15                           //wieder ab hier löschen jede 2te zeile
    16 L X+240.000 Y+100.000 Z+0.000 F0 M03     //bleiben
    17 L X+240.000 Y+100.000 Z+40.000           //löschen
    18 L X+254.000 Y+100.000 Z+0.000            //bleiben
    19 L X+254.000 Y+100.000 Z+40.000           //...
    20 L X+268.000 Y+100.000 Z+0.000
    21 L X+268.000 Y+100.000 Z+40.000
    22 L X+282.000 Y+100.000 Z+0.000 
    23 M113                                     //wieder bis hierher, ende der bahn
    24 M112 T0.05 A15                           //aber da neue bahn folgt, wieder jede 2te löschen
    25 L X+240.000 Y+100.000 Z+0.000 F0 M03     //bleiben
    26 L X+240.000 Y+100.000 Z+40.000           //löschen
    27 L X+254.000 Y+100.000 Z+0.000            //...
    28 L X+254.000 Y+100.000 Z+40.000
    29 L X+268.000 Y+100.000 Z+0.000
    30 L X+268.000 Y+100.000 Z+40.000
    31 L X+282.000 Y+100.000 Z+0.000
    32 M113                                     //aufhören, ende der bahn
    33 M112 T0.05 A15                           //aber da neue bahn folgt, wieder jede 2te löschen
    34 L X+240.000 Y+100.000 Z+0.000 F0 M03     //bleiben
    35 L X+240.000 Y+100.000 Z+40.000           //löschen
    36 L X+254.000 Y+100.000 Z+0.000            //...
    37 L X+254.000 Y+100.000 Z+40.000
    38 L X+268.000 Y+100.000 Z+0.000
    39 L X+268.000 Y+100.000 Z+40.000
    40 L X+282.000 Y+100.000 Z+0.000
    41 M113
    42 M30                                      //ende der datei
    43 END PGM TEST MM
    

    sieht eigentlich ganz einfach aus...aber es ist schwieriger als gedacht....

    sorry das ich das noch nciht so ganz kapiert habe, aber er macht irgendwie immer mist, entweder er löscht die falschen, löscht zuviele, bleibt in endlosschleife (wenn er ein ende ausversehen mit löscht)



  • string line;
    bool skip=false;
    while(getline(inFile,line)
    {
      //hier drin mußt du deine Eingabe auf die "Schlüsselwörter" überprüfen und
      //die Zeilen seit dem letzten "M112..." mitzählen
      if(!skip) outFile<<line<<'\n';
    }
    

    Reicht dir das als Ansatz?



  • ja eigentlich schon, nur arbeite ich mit den funktionen von RichEdit!

    Ich will ja nichtmal einen Code, sondern nur eine gute idee, für einen ansatz!


Anmelden zum Antworten