Source/ Codesnippets | | | | - page 1 - |
| RudiB. | allô zusammen,
je hoffe es peux mir quelqu'un aider.... je voudrais un marque aus einem Rich-Editfenster auslesen et dans un Stringvariable übertragen. Marque/auswählen haut oui hin mais ensuite ?? c'est mon Lösungsansatz, funktioniert seulement pas.
SendMessage(Rtf&,~EM_SETSEL,6,7)'--markiert cela 7.te marque im Richedit-Text
test$=SendMessage(Rtf&,~EM_GETSEL,0,0)'--ici soll cela marque z.B cela marque "s" bzw. Chr$(115) ausgelesen volonté, cet steht aussi à Position 7 im Text
imprimer test$'--Ausgabe ist "458758"
|
| | | | |
| | « cette Beitrag wurde comme Solution gekennzeichnet. » | | RudiB. | allô Georg,
Super vielen Dank...c'est qui Solution...
Déclarer x&,y&,y_neu&,testtext$,Richedit&,n$,Bereich#,rtf#
Faible rtf#,84
Cls
Richedit&=Créer("Richedit",%hwnd,»,20,20,600,300)
Testtext$="Declare test&,satz&,anzahl&,farb_anzahl&,superanzahl&,x&,y&,z&\n\
satz&=22\n\
anzahl&=44\n\
farb_anzahl&=100\n\
anzahl&=farb_anzahl&*30\n\
superanzahl&=anzahl&\n\
...\n\
...\n\
...\n\
usw. im Listing"
SetText Richedit&,TestText$
n$="anzahl&"'--cette Text soll gesucht volonté(seulement zum Beispiel)
DIM Bereich#,16
clear Bereich#
x&=-1
y_neu&=-1
Tandis que 1
Long bereich#,0=x&+1
Long bereich#,4=-1
Long bereich#,8=Addr(n$)
x&=SendMessage(Richedit&,$0438,2,bereich#)'--EM_FINDTEXT (2=Flagparameter pour seulement ganze Wörter chercher)
Cas x&=-1:BREAK
y&=moeglichkeit_1_instr("_",GetText $(Richedit&),y_neu&)
SendMessage(Richedit&,$00B1,x&,x&+Len(n$))'--Cursor mettons
y_neu&=x&+Len(n$)
Si non y&=x&
rtf_SetColor RGB(255,0,0)
Endif
SetFocus(Richedit&)
'Sleep 100
Endwhile
waitinput
Dispose Bereich#
end
Proc rtf_SetColor
Paramètres a&
Claire rtf#
LONG rtf#,0=84
LONG rtf#,4=$40000000
LONG rtf#,20=a&
sendmessage(Richedit&,1092,1,rtf#)'-EM_SETCHARFORMAT
ENDPROC
Proc moeglichkeit_1_instr
Paramètres such$,text$,pos&
InStr(such$,text$,pos&)
ENDPROC
Votre erste Solution avec "Instr" ist es...habs dans qui Boucle avec incorporé. PERFEKT.......quelquefois sieht on den forêt avant lauter Bäumen pas.
Großes merci aus München |
| | | | | |
| | Georg Teles | Guten soir,
cela EM_GETSEL markiert den Text sichtbar dans qui Éditer, en supplément muss on cela Éditer zunchst fokusieren
CLS
var rtf& = Créer("RichEdit", %hWnd, "Das est un kleiner Test", 5, 5, 300, 300)
SetFocus(Rtf&)'seulement Fokus mettons, bevor markiert wird
SendMessage(Rtf&,$00B1,6,7)'--markiert cela 7.te marque im Richedit-Text
waitinput
j'ai je n'en sais rien quoi du oui c'est ca avant la hâte, so serait je cela lösen:
ou bien compliqué:
CLS
declare test#
dim test#,100
var rtf& = Créer("RichEdit", %hWnd, "Das est un kleiner Test", 5, 5, 300, 300)
SendMessage(Rtf&,$000D,100,Addr(test#))
imprimer Mid $(String$(test#,0),23,1)'markiert cela dernier S im Text
DisPose test#
waitinput
FIN
Grüße |
| | | | |
| | RudiB. | allô Georg, seulement la fois merci pour Votre Antwort.... eh bien trop meiner Problematik, habe en supplément un lauffähiges Beispiel angehängt. je voudrais dans einem Programmlisting pour Variablen chercher... eh bien venez dans diesem Listing qui Variable "anzahl&" et "farb_anzahl&" avant, je cherche eh bien seulement pour "anzahl&" avec qui Suchoption 2 pour seulement ganze Wörter dans FINDTEXT. ici wird mais maintenant aussi cela "anzahl&" dans qui Variable "farb_anzahl&" avec trouvé/markiert, mais devrait pas so son. Daher voudrais je une Prüfung des Zeichens avant qui Suchvariable durchführen. alors: si marque avant Suchvariable = _ (Unterstrich) ensuite markiere pas. là J'ai eu plan à ~EM_GETTEXT gedacht, kriegs mais pas hin...
Déclarer x&,testtext$,Richedit&,n$,Bereich#,rtf#
Faible rtf#,84
Cls
Richedit&=Créer("Richedit",%hwnd,»,20,20,600,300)
Testtext$="Declare test&,satz&,anzahl&,farb_anzahl&,superanzahl&,x&,y&,z&\n\
satz&=22\n\
anzahl&=44\n\
farb_anzahl&=100\n\
anzahl&=farb_anzahl&*30\n\
superanzahl&=anzahl&\n\
...\n\
...\n\
...\n\
usw. im Listing"
SetText Richedit&,TestText$
n$="anzahl&"'--cette Text soll gesucht volonté(seulement zum Beispiel)
DIM Bereich#,16
clear Bereich#
x&=-1
Tandis que 1
Long bereich#,0=x&+1
Long bereich#,4=-1
Long bereich#,8=Addr(n$)
x&=SendMessage(Richedit&,$0438,2,bereich#)'--EM_FINDTEXT (2=Flagparameter pour seulement ganze Wörter chercher)
Cas x&=-1:BREAK
SendMessage(Richedit&,$00B1,x&,x&+Len(n$))'--Cursor mettons
rtf_SetColor RGB(255,0,0)
SetFocus(Richedit&)
'Sleep 100
Endwhile
SetFocus(Richedit&)
waitinput
Dispose Bereich#
end
Proc rtf_SetColor
Paramètres a&
Claire rtf#
LONG rtf#,0=84
LONG rtf#,4=$40000000
LONG rtf#,20=a&
sendmessage(Richedit&,1092,1,rtf#)'-EM_SETCHARFORMAT
ENDPROC
|
| | | Xprofan X4 Rudolf Beske / München
Hardware: NB Intel I9 - 16GByte RAM | 24.11.2021 ▲ |
| |
| | Thomas Freier | Habe la fois dans qui Documentation qui RTFHandling.pcu de Dieter Zornow gesehen, qui aussi avec EM_FINDTEXT arbeitet, mais là gäbe une Einschränkung, dass seulement qui ersten 64kb durchsucht volonté. Pour plus nimmt il qui EM_FINDTEXTEX . si (2=Flagparameter pour seulement ganze Wörter chercher) stimmt, et Wortgebilde pas ausschließt, serait je pas seulement chez x&=-1 descendre, mais aussi sur Leerzeichen, Punkt et Komma avant et pour dem Suchtext vérifier. |
| | | | |
| | RudiB. | allô Thomas,
zum einem besagt cela "X&=-1" oui , cela cela Dokument jusqu'à zum Ende durchsucht wird, bzw. cela Ende des Dokuments erreicht ist. pratique ist cela qui Rückgabewert de SendMessage chez
...et chez allen anderen Zeichencodes z.B Komma,Leerzeichen etc. wird es oui aussi richtig erkannt, plan seulement beim Unterstrich pas. cela funktioniert aussi chez Texten größer comme 64 KB.....
Daher cherche je oui pour qui Possibilité cela marque avant dem gefundenen Suchbegriff auszulesen. mais ~EM_GETSEL spuckt mir seulement payons aus .....möglicherweise Speicheradressen, doch comment lese je qui aus ?????? |
| | | | |
| | Georg Teles | Guten soir,
je hätte là une Ansatz - pour InStr et MemPos dürften aucun marque un Problem son ou bien ne...aucune Problem avec allen marque donner ... si du MemPos encore dans qui Boucle umsetzen peux, peux du aussi pas druckbare marque chercher, là était je trop fainéant une Proc pour toi trop écrivons :/
Déclarer x&,testtext$,Richedit&,n$,Bereich#,rtf#
Faible rtf#,84
Cls
Richedit&=Créer("Richedit",%hwnd,»,20,20,600,300)
Testtext$="Declare test&,satz&,anzahl&,farb_anzahl&,superanzahl&,x&,y&,z&\n\
satz&=22\n\
anzahl&=44\n\
farb_anzahl&=100\n\
anzahl&=farb_anzahl&*30\n\
superanzahl&=anzahl&\n\
...\n\
...\n\
...\n\
usw. im Listing"
SetText Richedit&,TestText$
n$="anzahl&"'--cette Text soll gesucht volonté(seulement zum Beispiel)
DIM Bereich#,16
clear Bereich#
x&=-1
Tandis que 1
Long bereich#,0=x&+1
Long bereich#,4=-1
Long bereich#,8=Addr(n$)
x&=SendMessage(Richedit&,$0438,2,bereich#)'--EM_FINDTEXT (2=Flagparameter pour seulement ganze Wörter chercher)
Cas x&=-1:BREAK
SendMessage(Richedit&,$00B1,x&,x&+Len(n$))'--Cursor mettons
rtf_SetColor RGB(255,0,0)
SetFocus(Richedit&)
'Sleep 100
Endwhile
' InStr Vorteil: peut sich une Boucle bilden, d.h. Position,
' ab qui huier gesucht wird, beginnt chez -1 ... chez gefundenem Ergebnis peux
' zur gefudenen Position +1 dazugezählt volonté et une neue cherche gestartet volonté, solange
' cela Ergebnis pas qui vorherige Suchposition était
imprimer "1. Ergebnis 1. Funktion: "+Str$(moeglichkeit_1_instr("farb_",GetText $(Richedit&),-1))
' aussi bien, problematisch wirds avec qui Position, cet muss toujours -1 son,
' là cela MemPos seulement den ersten Fund ausgibt
' cela peux on vermeinden, si le Textvariable um ab qui Gefundenen Position + Longueur gekürzt wird
' et ab qui Position -1 weitergesucht + qui Longueur et qui vorherige Position des abgeschnittenen Cordes hinzugezählt volonté muss !
imprimer "1. Ergebnis 2. Funktion: "+Str$(moeglichkeit_2_mempos("farb_",GetText $(Richedit&),-1))
imprimer "-------------------------------------------------------------"
' InStr dans Boucle
moeglichkeit_1_instr_schleife("farb_",GetText $(Richedit&),-1)
imprimer "-------------------------------------------------------------"
' ici gibt es rien trop voyons :/
moeglichkeit_2_mempos_schleife("farb_",GetText $(Richedit&),-1)
'SetFocus(Richedit&)
waitinput
Dispose Bereich#
end
Proc rtf_SetColor
Paramètres a&
Claire rtf#
LONG rtf#,0=84
LONG rtf#,4=$40000000
LONG rtf#,20=a&
sendmessage(Richedit&,1092,1,rtf#)'-EM_SETCHARFORMAT
ENDPROC
Proc moeglichkeit_1_instr
Paramètres such$,text$,pos&
InStr(such$,text$,pos&)
ENDPROC
Proc moeglichkeit_2_mempos
Paramètres such$,text$,pos&
declare text#, p&
dim text#, len(text$)
char text#,0 = text$
p& = MemPos(text#,pos&,such$)
DisPose text#
Retour p&
ENDPROC
Proc moeglichkeit_1_instr_schleife
Paramètres such$,text$,pos&
declare ende%, laufvar&, var&, i%
ende% = 0
var& = -2
laufvar& = -2
i% = 0
WhileNot ende%
var& = Str$(moeglichkeit_1_instr("farb_",GetText $(Richedit&),laufvar&))
Si non ((laufvar&+1) < var&)
imprimer "#--- aucun weiteren Treffer trouvé ---#"
pause
EndIf
laufvar& = var&+1
inc i%
imprimer Str$(i%)+". gefundene Position Boucle: "+Str$(var&)
Endwhile
ENDPROC
Proc moeglichkeit_2_mempos_schleife
Paramètres such$,text$,pos&
imprimer "war trop fainéant, une Proc trop écrivons, qui Aufwand ist trop grand\nder Text muss zugeschnitten volonté jusqu'à zum vorherigen treffer + Longueur\ndes textes et beim prochain Ergebniss muss cet vorherige Position + Longueur\nzur neuen gefundenen Position dazugerechnet volonté :/"
Retour
ENDPROC
Grüße |
| | | | |
| | RudiB. | allô Georg,
Super vielen Dank...c'est qui Solution...
Déclarer x&,y&,y_neu&,testtext$,Richedit&,n$,Bereich#,rtf#
Faible rtf#,84
Cls
Richedit&=Créer("Richedit",%hwnd,»,20,20,600,300)
Testtext$="Declare test&,satz&,anzahl&,farb_anzahl&,superanzahl&,x&,y&,z&\n\
satz&=22\n\
anzahl&=44\n\
farb_anzahl&=100\n\
anzahl&=farb_anzahl&*30\n\
superanzahl&=anzahl&\n\
...\n\
...\n\
...\n\
usw. im Listing"
SetText Richedit&,TestText$
n$="anzahl&"'--cette Text soll gesucht volonté(seulement zum Beispiel)
DIM Bereich#,16
clear Bereich#
x&=-1
y_neu&=-1
Tandis que 1
Long bereich#,0=x&+1
Long bereich#,4=-1
Long bereich#,8=Addr(n$)
x&=SendMessage(Richedit&,$0438,2,bereich#)'--EM_FINDTEXT (2=Flagparameter pour seulement ganze Wörter chercher)
Cas x&=-1:BREAK
y&=moeglichkeit_1_instr("_",GetText $(Richedit&),y_neu&)
SendMessage(Richedit&,$00B1,x&,x&+Len(n$))'--Cursor mettons
y_neu&=x&+Len(n$)
Si non y&=x&
rtf_SetColor RGB(255,0,0)
Endif
SetFocus(Richedit&)
'Sleep 100
Endwhile
waitinput
Dispose Bereich#
end
Proc rtf_SetColor
Paramètres a&
Claire rtf#
LONG rtf#,0=84
LONG rtf#,4=$40000000
LONG rtf#,20=a&
sendmessage(Richedit&,1092,1,rtf#)'-EM_SETCHARFORMAT
ENDPROC
Proc moeglichkeit_1_instr
Paramètres such$,text$,pos&
InStr(such$,text$,pos&)
ENDPROC
Votre erste Solution avec "Instr" ist es...habs dans qui Boucle avec incorporé. PERFEKT.......quelquefois sieht on den forêt avant lauter Bäumen pas.
Großes merci aus München |
| | | | |
| | Georg Teles | oui parfait,
eh, j'ai mais Mist posté, habe überlesen, quoi du konkret wolltest seh aujourd'hui aussi den forêt avant lauter Bäumen pas - zum but hat es mais geführt hehehehehe
Grüße de qui se baigner-Württembergischer / Bayrischer frontière (Ulm) |
| | | | |
|
Zum QuelltextOptions du sujet | 5.519 Views |
Themeninformationencet Thema hat 3 participant: |