| |
|
|
- Seite 1 - |
|
GDL | Hallo Profaner,
habe das Problem, dass ich bei folgendem Code es nicht hinbekomme, dass auch die Leerzeichen am Anfang einer Zeile im RTF mit zurückgegeben werden.Vielleicht weiss jemand Rat oder ne andere Lösung.Danke. KompilierenMarkierenSeparieren $H Windows.ph
$H Messages.ph
$H Richedit.ph
declare reg&,ende%,ende&,zeile$
Struct CHARRANGE = cpMin&,cpMax&
================================================================
Proc RicheditGetLine
Parameters REG&
returns linechars
Declare Range#,Retval&,Ret$,RetLong&
Dim Range#,CHARRANGE
SendMessage(REG&,~EM_EXGETSEL,0,Range#)
Retval& = SendMessage(REG&,~EM_EXLINEFROMCHAR,0,Range#.cpMin&)
Ret$ = Space$(100000) Zeile weglassen bringt Profan zum sofortigen Absturz
SendMessage(REG&,~EM_GETLINE,Retval&,Addr(Ret$))
Dispose Range#
Return Trim$(Ret$) bei return ret$ kein Reagieren
EndProc
======================================================================
window 0,0 - 600,600
ende&=createbutton(%hwnd,"Ende",500,500,80,20)
reg&=@Create("RichEdit",%hwnd,"",10,10,200,200)
setfocus(reg&)
clear ende%
whilenot ende%
getmessage
case getfocus(ende&):ende%=1
if &wparam=13
beep
sendkey(reg&,8)
zeile$=RicheditGetLine(reg&)
sendkey(reg&,10)
sendstring(reg&,zeile$)
sendkey(reg&,10)
endif
wend
Servus Georg |
|
|
| |
|
|
|
| |
|
- Seite 1 - |
|
Jörg Sellmeyer | komisch... bei mir gibts mit Return Ret$ keine Probleme Win98SE - vielleicht ists ja bei ME mal wieder alles anders.... |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 01.08.2005 ▲ |
|
|
|
|
GDL | Hallo Jörg
wenn ich den Code folgendermassen abändere und dann 1 + Return eingebe siehts laut Anhang aus.Ein return ret$ hat einen Absturz zur Folge, der nur noch mit dem Resetknopf beendet werden kann. Bei Anzeige im Hauptfenster mit drawtext passiert dies. KompilierenMarkierenSeparieren $H Windows.ph
$H Messages.ph
$H Richedit.ph
declare reg&,ende%,ende&,zeile$,lang&
Struct CHARRANGE = cpMin&,cpMax&
================================================================
Proc RicheditGetLine
Parameters REG&
returns linechars
Declare Range#,Retval&,Ret$,RetLong&
Dim Range#,CHARRANGE
SendMessage(REG&,~EM_EXGETSEL,0,Range#)
Retval& = SendMessage(REG&,~EM_EXLINEFROMCHAR,0,Range#.cpMin&)
Ret$ = Space$(100000) Zeile weglassen bringt Profan zum sofortigen Absturz
SendMessage(REG&,~EM_GETLINE,Retval&,Addr(Ret$))
Dispose Range#
zeile$=ret$
Return Trim$(Ret$) bei return ret$ kein Reagieren
EndProc
======================================================================
window 0,0 - 600,600
ende&=createbutton(%hwnd,"Ende",500,500,80,20)
reg&=@Create("RichEdit",%hwnd,"",10,10,200,200)
setfocus(reg&)
clear ende%
whilenot ende%
getmessage
case getfocus(ende&):ende%=1
if &wparam=13
sendkey(reg&,8)
RicheditGetLine(reg&)
sendkey(reg&,10)
sendstring(reg&,zeile$)
sendkey(reg&,10)
zeile$=left$(zeile$,80)
drawtext 1,500,zeile$
endif
wend
Servus Georg |
|
|
| |
|
|
|
| |
|
| |
|
|
|
GDL | Hallo iF,
super dies geht, obwohl ich net weis warum.Hängt dies mit der Richedit dll Version vielleicht zusammen? Wird ohne die Längenbeschränkung sonst zuviel zurückgegeben(Überschreiten der Profan-Stringlänge). Auf alle Fälle muss ich die Länge dann noch mit ret$=left$(ret$,150) begrenzen, da sonst noch ne Leerzeile eingefügt wird.Aber es geht jetzt.
Servus Georg |
|
|
| |
|
|
|
| Sowas habe ich mir gedacht. Deshalb mein Tipp.
Ich hätte mir an Deine Stelle einfach mal das was vom Sendmessage zurückgegeben wird 1:1 im Hexeditor angeschaut. Ich habe mir gedacht das dort vielleicht auch noch etwaige Sonderzeichen übermittelt werden - und das XProfan beim Return bzw. bei der Weitergabe da etwas im Speicher verkehrt macht. Also - Trick 1.5e17 - schubse den Inhalt des Strings erstmal durch eine XProfan-eigene Stringmanipulationsprozedur. Zum Glätten quasi.
Salve. |
|
|
| |
|
|
|
| |
|
| |
|
|
|
GDL | Ach ich hab doch Windows so lieb, lauter nette Sachen für Anfänger, so wie ich. Ich glaube ich brauch ne Auszeit. Im geposteten Code gehts, in der Anwendung dann geht nichts mehr. Es wird zwar im Richedit alles wunderbar angezeigt, aber ich kann den String nicht mehr auswerten, da die eigentliche Information von lauter kleinen senkrechten Strichen umrahmt ist.Diese verschwinden zwar bei return trim(ret$) meine Leerzeichen am Zeilenanfang aber leider auch.
Scheinbar ist es nicht möglich, die aktuelle Zeile eines Richedit so auszulesen, wie die Zeile tatsächlich ist.Schade.
Servus Georg |
|
|
| |
|
|
|
| Dochdoch ists - ich probiers morgen Vormittag gleich mal.
Salve. |
|
|
| |
|
|
|
Michael Wodrich | Wird die Zeile vielleicht in Unicode zurückgegeben (Leerzeichen gewandelt)?
Wer kennt sich mit Unicode aus und kann mal eine Filterfunktion schreiben?
Schöne Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 01.08.2005 ▲ |
|
|
|
| |
|
- Seite 2 - |
|
|
Jörg Sellmeyer | Das hat mir doch keine Ruhe gelassen, besonders nachdem ich nicht auf GDL hören konnte und es einmal ausprobiert habe - natürlich mit Komplettabsturz!
Aber die Lösung ist mal wieder ganz einfach: Ein SubStr$(Zeile$,1,Chr$(13)) erledscht das Ganze - ob Uni - oder Multicode . KompilierenMarkierenSeparieren $H Windows.ph
$H Messages.ph
$H Richedit.ph
Declare Reg&,Ende%,Ende&,Zeile$
Struct Charrange = Cpmin&,Cpmax&
================================================================
Proc Richeditgetline
Parameters Reg&
returns linechars
Declare Range#,Retval&,Ret$,Retlong&
Dim Range#,Charrange
Sendmessage(Reg&,~Em_exgetsel,0,Range#)
Retval& = Sendmessage(Reg&,~Em_exlinefromchar,0,Range#.Cpmin&)
Ret$ = Space$(100000)Zeile weglassen bringt Profan zum sofortigen Absturz
Sendmessage(Reg&,~Em_getline,Retval&,Addr(Ret$))
Dispose Range#
Return (Ret$) bei return ret$ kein Reagieren
Endproc
======================================================================
Window 0,0 - 600,600
Ende&=Createbutton(%Hwnd,"Ende",500,500,80,20)
Reg&=@Create("RichEdit",%Hwnd,"",10,10,200,200)
Setfocus(Reg&)
Clear Ende%
Declare xx%,ss$
Whilenot Ende%
Getmessage
Case Getfocus(Ende&):Ende%=1
If &Wparam=13
Beep
Sendkey(Reg&,8)
Zeile$=Richeditgetline(Reg&)
Zeile$=SubStr$(Zeile$,1,Chr$(13))Hier wird der überflüssige Teil abgeschnitten
Drawtext 1,500,Zeile$
Sendkey(Reg&,10)
Sendstring(Reg&,Zeile$)jetzt wird auch das Return-Zeichen nicht mehr mitgesendet
Sendkey(Reg&,10)
Endif
Wend
|
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 01.08.2005 ▲ |
|
|
|
|
GDL | Hallo Jörg,
es geht, bin wieder nen Schritt weiter.Danke. Verstehe zwar net, wie ein Entfernen von nem CHR$(13) über 900 kleine senkrechte Striche entfernt, bzw. wie diese überhaupt entstehen.
Servus Georg |
|
|
| |
|
|
|
Jörg Sellmeyer | Die Striche sind der Inhalt von Zeile$. Du hast Zeile$ ja quasi mit Space$(10000) dimensioniert. Wahrschscheinlich schreibt die Funktion dann 0-Bytes da rein und das gibt dann Probleme. SubStr$ gibt eben nur den 1. Teil vor Chr$(13) zurück.
Schön, daß es jetzt klappt! Gruß Jörg |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 01.08.2005 ▲ |
|
|
|