Zeilenumbruch im RichEdit feststellen



  • hallo zusammen,

    sorry, war gestern nicht am pc.

    ich schreibe einen converter um rtf in html umzuwandeln. ich muß also wärend der laufzeit feststellen ob ein zeilenumbruch im text ist und dann ein <br> setzten.



  • Bitte? Ich bin mir nicht nicht sicher, ob ich Dich richtig verstehe. Mein kleiner Codeausschnitt stellt fest, wann beim Tippen im TRichEdit eine neue Zeile angefangen wird. Das ist natürlich dann der Fall, wenn der Benutzer die Return-Taste drückt (bei Dir vor dem break), genauso gut aber, wenn das Zeilenende erreicht wird und die Komponente aus Platzgründen von selbst eine neue Zeile anfängt.
    Es stellt sich die Frage, was Avalon will. Die von Dir beschriebenen (harten) Zeilenumbrüche findet er, indem im Text nach "\r\n" sucht, die von mir beschriebenen automatischen findet er wie oben im Code gezeigt.

    Oops, da war ich aber langsam ...



  • 😉 eben, und ohne dir ordentliche Aussage was er denn eigentlich will, kann man da auch nur raten 😃

    @avalon
    Um den Tastendruck (Return) zur Laufzeit abzufangen bietet sich das Event OnKeyPress an:

    if (key == VK_RETURN)
    {
       //AddIrgendwo ("<br />");
    }
    

    mfg, Micha!



  • RandomAccess85 schrieb:

    @avalon
    Um den Tastendruck (Return) zur Laufzeit abzufangen bietet sich das Event OnKeyPress an:

    if (key == VK_RETURN)
    {
       //AddIrgendwo ("<br />");
    }
    

    mfg, Micha!

    nene, da hast du mich falsch verstanden. ich mache keine eingabe, daher kann OnKeyPress nicht abgefangen werden.

    ich versuchs noch mal anders zu erklären:

    ich öffne mit dem programm eine rtf datei. die sieht dann z.b. so aus:

    zeile 1
    zeile 2
    und noch eine zeile

    das programm soll die einlesen und dann daraus einen html text machen:

    zeile 1<br>zeile 2<br>und noch eine zeile

    (andere formatierungen berücksichtige ich jetzt nicht)

    oben im delphi code wird der Zeilenumbruch so ermittelt:

    if Trim(Source.Lines[AktLine])='' then   // Source = RichEdit, AktLine = Zeilennummer
    

    dies klappt aber nicht in c++. daher meine frage wie man so etwas in c++ ermittelt.



  • for(int loop=0; loop<RichEdit1->Lines->Count; ++loop)
    {
        String Line = RichEdit1->Lines->Strings[loop];
        // Line kannst Du jetzt weiterverarbeiten und am Ende ein <br> anhängen.
    }
    

    Gruß,
    Christian



  • OldMan00 schrieb:

    kann mich nur wiederholen.
    Lade die Datei in eine TStringList und Du hast jede Zeile einzeln, mit Zugriff von Strings[x].



  • Avalon schrieb:

    das programm soll die einlesen und dann daraus einen html text machen:

    zeile 1<br>zeile 2<br>und noch eine zeile

    (andere formatierungen berücksichtige ich jetzt nicht)

    Einfach mit StringReplace in RichEdit::Lines::Text alle '\r\n' durch '<br>' ersetzen.
    Diser Ansatz dürfte auch beim Umwandeln der anderen Format-"Tags" hilfreich sein.



  • Hallo,

    kann ich anstatt dem "RichEdit" auch eine String-Variable benutzen?

    Viele Grüße,
    Freddy



  • Na klar.
    Wenn der Text nur bearbeitet werden soll, ohne ihn anzuzeigen, dann ist das der zu bevorzugende Weg.



  • Wie muss ich dass dann abändern, ich kann ja nicht einfach in "RichEdit1->Lines->Count" oder "RichEdit1->Lines->Strings[loop]" RichEdit durch eine Variable ersetzen?

    Gruß,
    Freddy



  • Hallo

    Wenn du Zeilenorientiert arbeiten willst nimm TStringList. Brauchst du keine Rücksicht auf Zeilen zu nehmen nimm gleich AnsiString.

    bis bald
    akari



  • AnsiString Zeile = RichEdit1->Lines->Strings[x];



  • OldMan00 schrieb:

    AnsiString Zeile = RichEdit1->Lines->Strings[x];

    das ist mit schon klar, aber ich möchte es ja OHNE "RichEdit" machen 😉

    Ich habe z.b. meine Daten im string "text" dann die Zeilen in einem string array haben.

    Wie funktioniert das dann genau mit der TStringList?
    Ich habe leider noch nie in dieser Form mit Texten gearbeitet...

    Vielen Dank nochmal,
    Freddy



  • Hallo

    Suchfunktion und Builder-Hilfe benutzen! ]Das zum beispiel ist nur 3 Threads unter deinem

    bis bald
    akari



  • Im Prinzip verstehe ich es schon, aber ich blick im Moment gar nicht wie ich es zur Zeilentrennung einsetzen kann... 😕



  • Vielleicht solltest du erst nochmal erklären, was du eigentlich erreichen willst. Aus deinen Angaben wird nicht klar, auf welchen Teil der vorangegangenen Diskussion du dich beziehst.



  • Oh, das tut mir leid, ...

    Also:

    Ich Lese aus einer Flugsimulationssoftware die Flugdaten in einen String ein,
    diese sehen dann so aus:

    "string Daten;"

    time=12.0111996706285
    airspeed=22.0635795593262
    altitude=2043.95642089844
    vario=-0.000195638305740431
    compass=270
    slipball=0
    turnrate=0
    yawstringangle=-0.0215568039566278
    radiofrequency=123.5
    yaw=4.71238899230957
    pitch=0
    bank=0
    quaternionx=0
    quaterniony=0
    quaternionz=9.73535918546986E-8
    quaternionw=1
    ax=0
    ay=0
    az=0
    vx=25
    vy=-4.07301695304341E-6
    vz=0
    rollrate=-0.00339330825954676
    pitchrate=0
    yawrate=0
    

    Dann möchte ich jede Zeile in einer eigenen Stelle eines Arrays speichern.

    string Zeilen[25];

    Und zu guter letzt die nur die Werte nacheinander in einen Array speichern.

    float Werte[25];

    Aus dem ich mir dann die Werte holen kann, wenn ich sie brauche...

    Ich hoffe ich konnte es einigermaßen verständlich rüberbringen,
    vielen Dank für eure Geduld mit mir! 😉

    Gruß,
    Freddy



  • Hallo,

    zum schreiben der ganzen Zeilen in dein Array kannst du TRichEdit::Lines verwenden. Und zum einlesen der Werte TIniFiles. << Die Struktur deiner Datei ist ja der Struktur einer INI ähnlich. Das ganze natürlich in Schleifen.

    mfg, Micha!



  • RandomAccess85 schrieb:

    Hallo,

    zum schreiben der ganzen Zeilen in dein Array kannst du TRichEdit::Lines verwenden. Und zum einlesen der Werte TIniFiles. << Die Struktur deiner Datei ist ja der Struktur einer INI ähnlich. Das ganze natürlich in Schleifen.

    mfg, Micha!

    Ich habe ja kein "RichEdit" sondern möchte es nur mir Variablen machen (als konsolenanwendung)

    Viele Grüße,
    Freddy



  • Hallo,

    Hier würde sich evtl. gleich eine map<string, int> eignen. Die Strings sind dann der Schlüssel.


Anmelden zum Antworten