If( CHARFORMAT1 == CHARFORMAT2 )



  • lippoliv schrieb:

    sameItalic = (form1->dwEffects & CFM_ITALIC) == (form2->dwEffects & CFM_ITALIC);
    

    entspricht

    if( (form1->dwEffects & CFM_ITALIC) == (form2->dwEffects & CFM_ITALIC) )
        sameItalic = true;
    else
        sameItalic = false
    

    ???

    Ja.

    Generell kannst du

    if( bedingung )
        something = true;
    else
        something = false;
    

    einfach so schreiben:

    something = bedingung;
    


  • Sehr geil danke...

    Allerdings darf ich mitteilen... Es funktioniert nicht...

    Es sind ca. 800 Zeilen quellcode, ka ob ich die bei Nopaste ma posten soll und du dich da durchwurschteln willst, aber ich erkläre dir auf jeden ersma wie ich das mache(n will):

    Ich Selektiere den ersten buchstaben(SetSel) und hole mir sein CHARFORMAT, selektiere den darauffolgenden und hole mir auch dort ein CHARFORMAT.

    Dann sollen diese beiden verglichen werden (zwischendrinn schreib ich die übrigens in ein array[die buchstaben]) wenn sie gleich sind wird i++ gemacht; sinn ist:

    //pseudo
    buff[j] = erster buchstabe;
    buff[j+1] = zweiter bruchstabe;
    

    und in der nächsten runde das selbe, da selektiere ich den i-ten buchstaben und den i+1ten buchstaben, und vergleiche... sieht so aus(die kursiven werden verglichen)

    i=0;
    hallo
    ->buff[j(0)] = h;
    ->buff[j+1(1)] = a;
    j++;(j=1)
    hallo
    ->buff[j(1)] = a;
    ->buff[j+1(2)] = l;
    j++;(j=2)
    ha*ll*o
    ->buff[j(2)] = l;
    ->buff[j+1(3)] = '\0';<< sind verschieden...

    dann soll von dem letzten buchstaben die formatierung gespeichert werden.. dann würde aus hallo der text:

    hal'[:b'lo'b:]'
    

    werden.
    Und so kann ich beim zurückschreiben halt ermitteln, was wie geschrieben wird.
    natürlich kann auch mehr sein:

    hal'[:b'lo'b:] du '[:i;u'da'u;i:]'
    

    oder so... Allerdings muss ich erstmal das trennen der bereiche hinbekommen.

    Könnt ihr euch darunter irgendwas vorstellen?



  • Lass dir doch einfach mal die Werte von dwMask und dwEffects ausgeben.



  • Wenn ich das nur könnte... Sry aber ich habe schon verzweifelt gesucht, ih habe es nie hinbekommen...


  • Mod

    Einfach Breakpoint setzen. Vursor auf die Variable und Shift+F9 oder einfach hoovern und auf Tooltip warten...



  • lippoliv schrieb:

    Wenn ich das nur könnte... Sry aber ich habe schon verzweifelt gesucht, ih habe es nie hinbekommen...

    Hast Du keinen Debugger, der Dir bei Variablenwatch behilflich sein könnte?
    Oder warum kannst Du das nicht?

    Martin



  • Nohcmals zu meinen primitiven mitteln:
    Notepad++ (KEIN interner compiler/debugger)
    MinGW(EXTERNER compiler)

    Ich weiß nich wer Notepad++ kennnt, aber der einzige unterschied zu Notepad ist syntaxhighlighting was manchmal zu wünschen übrig lässt...

    printf( "%d/%s/%l/%f", form1->dwEffects, form1->dwEffects, form1->dwEffects, form1->dwEffects );
    

    funktioniert alles nicht (alles 0, bis auf %s"<null>" und %l""...)



  • Nun, was soll ich denn nun dazu sagen? *räusper*

    Du weißt nicht was für ein mächtiges Werkzeug Dir mit einem fehlenden Debugger entgeht...
    Mit einem Debugger kannst Du wirklich jede einzelne Codezeile Schritt für Schritt verfolgen und dabei gleichzeitig die Variablen- und Struktur-Inhalte (hinein)sehen!

    Ohne überheblich zu wirken, mein Rat: Besorg Dir ein vernünftiges integriertes Entwicklungssystem. Es gibt welche die kostenlos sind!
    Z.B. BCB Borland C++ Builder oder auch die Express-Editionen von Microsoft Visual C++.

    Martin



  • lippoliv schrieb:

    printf( "%d/%s/%l/%f", form1->dwEffects, form1->dwEffects, form1->dwEffects, form1->dwEffects );
    

    funktioniert alles nicht (alles 0, bis auf %s"<null>" und %l""...)

    Was heißt "funktioniert alles nicht"?

    Wenn bei %d 0 ausgegeben wird, dann steht da eben der Wert 0 drin. Was ist mit dwMask und den Werten der anderen Struktur?

    P.S.: Benutz besser %08x, dann kann man die Flags besser ablesen.



  • Min jung, ik hab mit soeppes scho georbeided...

    Ne wirklich, ich weiß was mir entgeht, sehr geil.. F7 eine Zeile weiter F8 in die aufgerufene funktion, und da mit F7 jede Zeile weiter, F9 bis zum nächsten haltepunkt..

    Ich habe momentan keine Wahl, da ich in der Ausbildung bin, und wir "ein auge für kot... äh code" 😃 bekommen sollen...

    Ich werde warten müssen bis mein Chef sein OK gibt.

    Kann irgendwer von euch das mal debuggen? würde die Entsprechenden Dateien online stellen...


  • Mod

    lippoliv schrieb:

    Nohcmals zu meinen primitiven mitteln:
    Notepad++ (KEIN interner compiler/debugger)
    MinGW(EXTERNER compiler)

    <kopfschüttel /> Kein Kommentar!

    Du springst auch in den Atlantik und schwimmst, wenn Dir einer sagt, dass Du nach Amerkia sollst? 🤡



  • http://nopaste.info/3ae76c15d7_nl.html
    und
    http://nopaste.info/a1398f8a1c_nl.html

    Soll ich meinem Chef sagen
    "Mir ist egal was sie denken... ich mach was ich will!"? 😃

    Mein Chef war seit ca. 1 Monat nicht mehr bei uns Azubis, er hatte glaube ich auch nie vorgesehen, dass wir WinAPI machen, aber ich forsche gerne, weil ich so lerne...

    Naja, währ halt cool wenn irgendwer mal den code durch nen Debugger jagen könnte / mir sagen könnte, wo ich einen C debugger finde *verzweifel*



  • Du musst den cbSize-Member deiner CHARFORMAT-Strukturen initialisieren.

    Ansonsten sollte dir nur klar sein, dass bei deiner Vorgehensweise das erste Zeichen, bei dem der Vergleich fehlschlägt, bereits in buff drinsteht, weil du es schon vor der Formatprüfung dorthin einliest.



  • aber dann wird es wieder überschrieben, daher die bedingte inkrementierung von i...

    [edit]es funktioniert nicht 😢



  • lippoliv schrieb:

    aber dann wird es wieder überschrieben, daher die bedingte inkrementierung von i...

    Da wird gar nichts überschrieben, weil du die Schleife abbrichst (isEnd = true;), wenn der Formatvergleich fehlschlägt.



  • (mein edit von eben) deine sache funktioniert nicht 😢

    Die schleife wird abgebrochen wenn das nächste Zeichen zu dem aktuellen eine andere formatierung hat... Nach schleifenabbruch wird

    buff[i+1] = '\0';
    

    ausgeführt... oder hab ich das vergessen?



  • JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

    es geht.. ich hatte es vergessen... diene methode geht.... JAAAAAAAA

    SERH GEIL::: DANKE ALLEN.....

    (buff[i+1] nach der schleife auf \0 setzen, und cbSize initialisieren.



  • lippoliv schrieb:

    (buff[i+1] nach der schleife auf \0 setzen

    Oder vielleicht die Zeichen erst dann (und dann gleich auf einen Rutsch) rauslesen, wenn du mit der Formatprüfung fertig bist. Das Eine hat ja mit dem Anderen nichts zu tun.



  • Doch, ich muss sie danach nicht mehr selektieren, also später...

    apropo... es läuft die Formatier-Aktion schonmal, jetzt kommt allerdings noch etwas anderes zu tragen: Wie komme ich in die zweite Zeile?


Anmelden zum Antworten