Seite 1 von 1

Memoline [Erledigt]

Verfasst: Mo, 10. Feb 2014 17:02
von Jan
Gerade kämpfe ich mit einem Problem beim Ausdruck von Inhalten aus Memofeldern. Das lief alles gut, aber plötzlich wird ein Sonderzeichen mit ausgedruckt. Das sieht aus wie ein kleines i ,mit Aczent Grave. Mit Memotran() wird der Softreturn entfernt, das Sonderzeichen bleibt. Auch ein StrTran() auf Chr(236), das so aussieht wie das Sonderzeichen im Ausdruck, hilft nicht.

Was kann da helfen?

Jan

Re: Memoline

Verfasst: Mo, 10. Feb 2014 17:36
von Tom

Code: Alles auswählen

c := HardCr(c)
Oder Chr(141) selbst entfernen. :wink:

Re: Memoline

Verfasst: Di, 11. Feb 2014 8:22
von Jan
Moin Tom,

jetzt bin ich aber mehr als nur ein wenig irritiert.

Ersteinmal: Ja, StrTran(cMemotext, Chr(141), "") hat funktioniert.

Aber: Das hätte doch schon MemoTran(cMemotext, crlf, "") machen müssen. Oder übersehe ich da irgendwas?

Jan

Re: Memoline [Erledigt]

Verfasst: Di, 11. Feb 2014 8:26
von brandelh
ja du übersiehst etwas ;-)

harte Zeilenschaltung mit Enter Taste: chr(13)+chr(10) // CRLF
weiche Zeilenschaltung mit MEMOEDIT() (nicht mit XbpMLE()): Chr(141)

MemoTran() sagt mir jetzt nichts, die vorgesehene Funktion ist: HardCR()

HardCR(cMemoFeldvonMemoEdit) => normaler Text mit CRLF

Re: Memoline [Erledigt]

Verfasst: Di, 11. Feb 2014 8:29
von brandelh
Doku hat geschrieben:MemoTran( <cString> , ;
[<cNewHardCR>], ;
[<cNewSoftCR>] ) --> cNewString

Parameter
<cString>
<cString> ist eine Zeichenkette oder der Inhalt eines Memo-Felds, in der die Zeichen für einen Zeilenumbruch ersetzt werden sollen.
<cNewHardCR>
Mit dem Zeichen <cNewHardCR> werden alle harten Zeilenumbrüche (Chr(13)+Chr(10)) ersetzt. Als Standardwert wird ein Semikolon (;) verwendet.
<cNewSoftCR>
Mit dem Zeichen <cNewSoftCR> werden alle weichen Zeilenumbrüche (Chr(141)+Chr(10)) ersetzt. Als Standardwert wird ein Leerzeichen (Chr(32)) verwendet.
was es alles gibt ;-)

Wenn die Beschreibung stimmt, macht MemoTran() einen Fehler, da die weiche Zeilenschaltung eben Chr(141) und nicht Chr(141)+Chr(10) ist.
Unter Win32 reicht ja sogar ein Chr(10) für eine neue Zeile in z.B. msgbox()

Re: Memoline [Erledigt]

Verfasst: Di, 11. Feb 2014 8:49
von Jan
Moin Hubert,

der Unterschied zwischen MemoTran() und HardCr() ist, das HardCR() die weiche Zeilenschaltung durch eine harte ersetzt. Das kann ich in diesem Fall aber garnicht gebrauchen, da ich Fließtext haben möchte. Der sich nicht an der Zeilenlänge im Editierfenster orientiert. Daher ersetze ich die weiche Zeilenschaltung ja auch durch ein "". Mit MemoTran() kann ich beide Zeilenschaltung halt sehr einfach durch ein x-beliebiges Zeichen ersetzen, was flexibler als HardCr() ist.

Jan

Re: Memoline [Erledigt]

Verfasst: Di, 11. Feb 2014 8:59
von brandelh
Jan hat geschrieben:Mit MemoTran() kann ich beide Zeilenschaltung halt sehr einfach durch ein x-beliebiges Zeichen ersetzen, was flexibler als HardCr() ist.
wenn es funktionert ;-) (was es eigentlich sollte ...)

Re: Memoline

Verfasst: Di, 11. Feb 2014 9:57
von Martin Altmann
Moin Jan,
Jan hat geschrieben:Ersteinmal: Ja, StrTran(cMemotext, Chr(141), "") hat funktioniert.
Aber: Das hätte doch schon MemoTran(cMemotext, crlf, "") machen müssen. Oder übersehe ich da irgendwas?
klar übersiehst Du da etwas :D
chr(13)+chr(10) ist was anderes, als chr(141).
Es nützt also nur teilweise, wenn Du ein MemoTran(cMemotext, crlf, "") machst.

Viele Grüße,
Martin

Re: Memoline [Erledigt]

Verfasst: Di, 11. Feb 2014 10:47
von Jan
Mein lieber Martin,

schau Dir noch einmal die Onlinehilfe zu MemoTran() an (insbesondere was der 3. Parameter bedeutet), und dann sage mir, ob Du Deinen Beitrag noch so stehen lassen möchtest :-D

Jan

Re: Memoline [Erledigt]

Verfasst: Di, 11. Feb 2014 10:50
von Martin Altmann
Hast recht - aber stehen lasse ich das trotzdem ;-)