Memofeld mit führenden Leerzeilen

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Memofeld mit führenden Leerzeilen

Beitrag von Koverhage »

Stehe gerade auf dem Schlauch.
Wie kann ich führende Leerzeilen auf einen Memofeld entfernen (ohne jede Zeile einzeln zu bearbeiten)
wenn ich einen Replace mit LTRIM(memofeld) mache passiert nichts.
Gruß
Klaus
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Memofeld mit führenden Leerzeilen

Beitrag von Wolfgang Ciriack »

Ich vermute, du hast da Umbrüche chr(141)+chr(10) drin. Schau mal nach HardCR() oder MemoTran().
Viele Grüße
Wolfgang
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Memofeld mit führenden Leerzeilen

Beitrag von brandelh »

Koverhage hat geschrieben: Di, 10. Nov 2020 16:23 Wie kann ich führende Leerzeilen auf einen Memofeld entfernen (ohne jede Zeile einzeln zu bearbeiten)
Meinst du jetzt ZEILE für ZEILE im Memotext ?

ltrim() entfernt ja nur am Anfang die Leerzeichen, diese aber zuverlässig, wenn nicht davor schon eine Zeilenschaltung steht,
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Memofeld mit führenden Leerzeilen

Beitrag von Koverhage »

Wolfgang,

memoTran hat den Nachteil, dass alle CR+LF ersetzt werden auch bei wirklichem Text.
Fange das zunächst bei Drucken ab. Vermutlich bleibt mir nichts anderes übrig dafür eine
Funktion zur Bereinigung zu schreiben.
Gruß
Klaus
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Memofeld mit führenden Leerzeilen

Beitrag von Koverhage »

Hubert,
der Text besteht z.B. aus
10 x CR+LF
und dann der Text
Gruß
Klaus
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9358
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Memofeld mit führenden Leerzeilen

Beitrag von Tom »

Code: Alles auswählen

#define CRLF Chr(13)+Chr(10)

REPLACE memo WITH RemoveLeadingCrlf(memo)

FUNCTION RemoveLeadingCrlf(cText)
DO WHILE Left(cText,2) == CRLF
  cText := SubStr(cText,3)
ENDDO
RETURN cText
Herzlich,
Tom
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Memofeld mit führenden Leerzeilen

Beitrag von Koverhage »

Tom,
Danke. Werde es ausprobieren und dann übernehmen ;-)
Gruß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Memofeld mit führenden Leerzeilen

Beitrag von brandelh »

ich würde bei jedem Durchlauf noch ein Alltrim() einbauen, oft werden auch ein paar Blanks zwischen den CRLF stehen ;-)

Ich erweitere mal Toms Funktion ... ich hoffe ohne Tippfehler ;-)

Code: Alles auswählen

#define CRLF Chr(13)+Chr(10)

REPLACE memo WITH RemoveLeadingCrlf(memo)

FUNCTION RemoveLeadingCrlf(cText)
cText := alltrim(cText)
DO WHILE Left(cText,2) == CRLF
  cText := alltrim(SubStr(cText,3))
ENDDO
RETURN cText
Gruß
Hubert
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Memofeld mit führenden Leerzeilen

Beitrag von Wolfgang Ciriack »

Blöd nur, wenn der Anwender z.B. eine Leerzeile vorab haben möchte :(
Viele Grüße
Wolfgang
Benutzeravatar
BJelinek
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 218
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen
Hat sich bedankt: 9 Mal
Danksagung erhalten: 3 Mal

Re: Memofeld mit führenden Leerzeilen

Beitrag von BJelinek »

Dann hilft alt+255 geschütztes Leerzeichen.
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Memofeld mit führenden Leerzeilen

Beitrag von brandelh »

Wolfgang Ciriack hat geschrieben: Mi, 11. Nov 2020 16:25 Blöd nur, wenn der Anwender z.B. eine Leerzeile vorab haben möchte :(
man kann nicht alles haben ;-)

Aber Klaus wird wissen was die wollen ;-)
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Memofeld mit führenden Leerzeilen

Beitrag von Koverhage »

Ja und Bernd hat ja die Lösung schon geschrieben (kennt Bern etwa meine Software ?).
Grundsätzlich ist es bei mir so:
Wenn ein Anwender einen Text nicht haben möchte, kann er diesen mit einem "geschützten" Leerzeichen verhindern.
Analog zu Office gibt es sogar den Hotkey Shift_Strg_Space dafür ;-)
Gruß
Klaus
Antworten