Abbruchbedingung....was ist hier wieder aflsch?



  • Hallo,

    meine letzten fragen hatten sich ja geklärt, nun habe ich aber noch eine!
    Sachverhalt:

    Eine Datei soll solang bearbeitet werdem bis "M113" gefunden wird, dann soll abgebrochen werden!
    Sollte allerdings nach dem "M113" in der nächsten Zeile ein "M112" stehen, soll er nach dem "M112" bis zum nächsten "M113" weitermachen...

    int j=16;
    
     while((RichEdit1->Lines->Strings[j].Pos("M113")==0)&&(RichEdit1->Lines->Strings[j+1].Pos("M112")==0))
     {
       int StartPosi=RichEdit1->Lines->Strings[j].Pos("Z");
       ShowMessage(StartPosi);
       int laenge = RichEdit1->Lines->Strings[j].Length();
       //ShowMessage(laenge);
       int rest = laenge-StartPosi;
       //ShowMessage(rest);
       String Text2 = "FMAX M99";
       String Text = RichEdit1->Lines->Strings[j];
       String Text_Old = RichEdit1->Lines->Strings[j].SubString(0,StartPosi-1);
       //ShowMessage(Text_Old);
       Text2 = Text_Old+Text2;
       Text.Delete(StartPosi,rest);
       Text.Insert(Text2,StartPosi);
       RichEdit1->Lines->Strings[j] = Text2;
       j++;
     }
    

    das ist der code, und hier ein beispiel text...

    Ursprungsdatei:

    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 (das klappt alles)
    16 L X+240.000 Y+100.000 Z+0.000 F0 M03
    17 L X+240.000 Y+100.000 Z+40.000 <-----und bei den verbleibenden zeilen nach dem Z alles ersetzen
    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               <----------hier soll er aufhören mit text zu ersetzen
    15 M112 T0.05 A15     <---------aber hier danach wieder anfangen
    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                      <----------------hier aufhören
    49 M30
    50 END PGM TEST MM
    

    und das ist das ergebnis:

    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
    17 L X+240.000 Y+100.000 FMAX M99
    19 L X+254.000 Y+100.000 FMAX M99
    21 L X+268.000 Y+100.000 FMAX M99
    23 L X+282.000 Y+100.000 FMAX M99
    25 L X+296.000 Y+100.000 FMAX M99
    27 L X+310.000 Y+100.000 FMAX M99
    29 L X+324.000 Y+100.000 FMAX M99
    31 L X+338.000 Y+100.000 FMAX M99
    33 L X+352.000 Y+100.000 FMAX M99
    35 L X+366.000 Y+100.000 FMAX M99
    37 L X+380.000 Y+100.000 FMAX M99
    39 L X+394.000 Y+100.000 FMAX M99
    41 L X+408.000 Y+100.000 FMAX M99
    43 L X+422.000 Y+100.000 FMAX M99
    45 L X+436.000 Y+100.000 FMAX M99
    47 L X+450.000 Y+100.000 FMAX M99
    48 M113
    15 M112 T0.05 A15
    17 L X+240.000 Y+100.000 Z+40.000
    19 L X+254.000 Y+100.000 Z+40.000
    21 L X+268.000 Y+100.000 Z+40.000
    23 L X+282.000 Y+100.000 Z+40.000
    25 L X+296.000 Y+100.000 Z+40.000
    27 L X+310.000 Y+100.000 Z+40.000
    29 L X+324.000 Y+100.000 Z+40.000
    31 L X+338.000 Y+100.000 Z+40.000
    33 L X+352.000 Y+100.000 Z+40.000
    35 L X+366.000 Y+100.000 Z+40.000
    37 L X+380.000 Y+100.000 Z+40.000
    39 L X+394.000 Y+100.000 Z+40.000
    41 L X+408.000 Y+100.000 Z+40.000
    43 L X+422.000 Y+100.000 Z+40.000
    45 L X+436.000 Y+100.000 Z+40.000
    47 L X+450.000 Y+100.000 Z+40.000
    48 M113
    49 M30
    50 END PGM TEST MM
    

    also mit dem löschen das funktioniert, nur leider ersetzt er den text nach dem ersten "M113" nicht, wieso?

    ist an der while schleife was falsch??



  • hi,

    du hast deine Abbruchbedingung falsch formuliert:
    RichEdit1->Lines->Strings[j].Pos("M113") == 0
    RichEdit1->Lines->Strings[j+1].Pos("M112") == 0

    Methode Pos gibt NULL zurück wenn Zeichenkette könnte NICHT gefunden werden.

    Wäre vieleicht so richtig?
    RichEdit1->Lines->Strings[j].Pos("M113") != 0
    RichEdit1->Lines->Strings[j+1].Pos("M112") != 0



  • nee, wenn ich das so mache, dann ersetzt er gar keinen text!°..

    hm....was könnte noch sein?



  • hm...würde mich echt über hilfe freuen, weis echt nimemr worans liegt!



  • schau dir mal genau deine abbruchbedingung an, er geht die schleife solang durch, bis er M113 und M112 gefunden hat, danach macht er nix mehr....!!!



  • Deine Abbruchbedingung ist falsch. Deine Schleife läuft, solange die Zeile j M113 nicht enthält und Zeile j+1 M112 nicht enthält.

    Das heißt, sie bricht ab, wenn Zeile j M113 enthält oder Zeile j+1 M112 enthält.

    Das ist doch nicht das, was du willst, oder?


Anmelden zum Antworten