Deutsch
Forum

Leerzeichen am Zeilenanfang

 
- 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
 
Windows7 Xprofan 8,9,10 [...]  [...] 
31.07.2005  
 



 
- 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

104 kB
Hochgeladen:01.08.2005
Ladeanzahl45
Herunterladen
 
Windows7 Xprofan 8,9,10 [...]  [...] 
01.08.2005  
 



Und wenn Du mal statt
KompilierenMarkierenSeparieren
Return Ret$
einfach
Return mid$(ret$,1,len(ret$))

schreibst?
 
01.08.2005  
 




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
 
Windows7 Xprofan 8,9,10 [...]  [...] 
01.08.2005  
 



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.
 
01.08.2005  
 



Nachtrag: (weils Quickposten son Spaß macht.) ^^

Vielleicht hätte das auch schon gereicht:
KompilierenMarkierenSeparieren
declare bval$
...
//hier Dein Code
...
sendmessage(...
...
bval$=ret$
return bval$
Oder XPSEler:
KompilierenMarkierenSeparieren
...
//hier Dein Code
...
swap ret$,ret$
return ret$
Hm - vielleicht hätte das hier auch schon gereicht:
KompilierenMarkierenSeparieren
...
//hier Dein Code
ret$=ret$
return ret$
Salve, iF.
 
01.08.2005  
 




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
 
Windows7 Xprofan 8,9,10 [...]  [...] 
01.08.2005  
 



Dochdoch ists - ich probiers morgen Vormittag gleich mal.

Salve.
 
01.08.2005  
 




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
 
Windows7 Xprofan 8,9,10 [...]  [...] 
01.08.2005  
 




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  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

4.579 Betrachtungen

Unbenanntvor 0 min.

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie