| |
|
|
Timotheus | Noch eine Frage ,
Wie kann man in einem Richedit einen waagerechten Scrollbalken setzen, oder wenigstens den Zeilenumbruch ausschalten?
Timo |
|
|
| |
|
|
|
| Hallo Timo... Mit RichEdit Version 1.0 gibt es da tatsächlich heftige Probleme. Wenn das Programm aber nicht unbedingt auf jedem Windows95 System laufen soll, müßte das aber so funktionieren: KompilierenMarkierenSeparierenWINDOWSTYLE 31+512
WINDOWTITLE "RichEdit"
WINDOW 0,0-640,440
Declare RichEdit&,DLL_HDL&
DLL_HDL&=@UseDLL($SYSPATH+"RICHED20.DLL")
LET RichEdit&=@Control("RichEdit20A","",$40000000+$10000000+4+$1000+
$800000+$200000+$100000,20,20,300,300,%HWND,2112,%HINSTANCE)
whilenot %MENUITEM=-2
WAITINPUT
wend
@DESTROYWINDOW(RichEdit&)
FREEDLL DLL_HDL&
Habs bislang aber nur unter Windows98 getestet... |
|
|
| |
|
|
|
Frank Abbing | Hi,
[quote:1ad7ee741b]$40000000+$10000000+4+$1000+$800000+$200000+$100000[/quote:1ad7ee741b] In diesem Fall geht es ja gut. Aber erfahrene Programmierer sollten sich unbedingt angewöhnen, Flags nicht zu addieren, sondern mit OR zu verknüpfen... Kann ansonsten zu einer bösen Fehlerquelle werden. |
|
|
| |
|
|
|
| Hallo Frank....
Erfahrener Programmierer? Hoffentlich meinst du damit nicht mich... Sehe mich allerhöchstens als Lehrling. Trotzdem finde ich das, was du da sagt, sehr interessant. Ich hatte bislang noch keine Probleme bei der Verknüfung von Flags mit +, kann dir aber ein Beispiel zeigen, bei der die Verknüfung mit @or ziemlich derbe in die Hose geht (eigentlich das einzige Beispiel mit or, das ich jemals getestet habe). Mit + haut der selbe Quelltext scheinbar wunderbar hin. Wo steht das, daß man Flags mit or verknüpft? Bin, wie gesagt, eher ein Lehrling als ein Experte und Erfahrung ist immer relativ.... |
|
|
| |
|
|
|
Michael Dell | Hallo Andreas,
wenn ich mich recht erinnere müssen Flags mit binärem Oder (also | ) verknüpft werden das in vielen Fällen zu ähnlichen oder identischen Ergebnissen führt wie das Addieren aber eben nicht immer. Das logische Oder (also Or ) kann ähnlich wie Addieren und auch Subtrahieren wirken und ein ziemliches Chaos anrichten.
Oh man, hoffentlich hab ich das jetzt richtig erklärt sonst brauch ich mich beim nächsten Klassentreffen gar nicht erst blicken lassen.
Gruß
Michael... |
|
|
| Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 06.10.2004 ▲ |
|
|
|
|
| Hallo Frank, hallo Michael...
Ich bin zwar im Moment in der Nachtschicht und deshalb nicht so ganz aufnahmefähig - aber ist es nicht so, das Flags sowieso immer nur in binären Zweierpotenzen angegeben werden?
Also: Erster Flag 00000001=1 zweiter Flag 00000010=2 dritter Flag 00000100=4 vierter Flag 00001000=8
Ist es da nicht Jacke wie Hose, also ganz egal, ob man addiert oder mit binärem ODER verknüft? Ein unterschiedliches Ergebnis würde es doch nur geben, wenn ein Flag z.B. 11, also 3 wäre - das wäre dann doch aber doch kein Flag, oder? Wie sollte man einen Flagwert 3 denn zurückrechnen?? Wie gesagt, bin absolut kein Experte aber eure Einwände gehen für mich im Augenblick irgendwie ziemlich weit an der Logik vorbei ... |
|
|
| |
|
|
|
Michael Dell | Hallo Andreas,
ich denke es geht mehr darum fehler des Programierers zu vermeiden.
z.B.: Du gibst aus versehn zweimal das gleiche Flag an:
Addieren 0001 0001 ------- 0010 = 2
Ver- Odern 0001 0001 ------- 0001 = 1
So was is ja nicht grad erwünscht kann aber mal vorkommen.
Kann sein das ich mich Irre, bin vom Experten weit entfernt.
Michael... |
|
|
| Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 06.10.2004 ▲ |
|
|
|
|
| Hallo Michael!
Der gleiche Gedanke ist mir gestern gegen 23.00Uhr auch gekommen (manchmal brauche ich etwas länger zum Schalten). In der Windows.PH stehen unter anderem Flags, die aus mehreren Flags zusammengesetzt sind. Wenn man hier die schon enthaltenen Flags auch noch addiert (weil man keine Ahnung hat, von dem was man da tut), kommt es zwangsläufig zu einem Fehler. Ein OR schluckt dagegen solchen Mist bedenkenlos und man bekommt trotzdem noch das richtige Ergebnis.
@Frank: Wenn du mir vorschlägts besser Flags mit OR zu verknüpfen, hast du vielleicht den Eindruck, daß ich gar nicht weiß was ich da tue? :biggrin:
Eine Addition von Flags ist doch viel übersichtlicher als ein OR oder ein | im Quelltext. Ein daraus entstandener Wert läßt sich ziemlich problemlos nachvollziehen - wie sieht das aber mit OR oder | aus? Ich denke mal, nicht jeder kennt sich im Hexadezimal und Binärcode so gut aus, das er sofort kapiert was da passiert - oder sehe ich das falsch?? Ich könnte das auf Anhieb jedenfalls nicht erkennen... |
|
|
| |
|
|
|
Frank Abbing | Hi,
[quote:9978a1c21f]wenn ich mich recht erinnere müssen Flags mit binärem Oder (also | ) verknüpft werden das in vielen Fällen zu ähnlichen oder identischen Ergebnissen führt wie das Addieren aber eben nicht immer. Das logische Oder (also Or ) kann ähnlich wie Addieren und auch Subtrahieren wirken und ein ziemliches Chaos anrichten. [/quote:9978a1c21f] Genau, das binäre OR ist gemeint.
[quote:9978a1c21f]@Frank: Wenn du mir vorschlägts besser Flags mit OR zu verknüpfen, hast du vielleicht den Eindruck, daß ich gar nicht weiß was ich da tue?
Eine Addition von Flags ist doch viel übersichtlicher als ein OR oder ein | im Quelltext. Ein daraus entstandener Wert läßt sich ziemlich problemlos nachvollziehen - wie sieht das aber mit OR oder | aus? Ich denke mal, nicht jeder kennt sich im Hexadezimal und Binärcode so gut aus, das er sofort kapiert was da passiert - oder sehe ich das falsch?? Ich könnte das auf Anhieb jedenfalls nicht erkennen... [/quote:9978a1c21f] Ob du + oder | verwendest, beides sieht gleich gut aus und ist gleich aufwendig zum Eingeben. Du kannst ja privat das + ruhig verwenden, aber wenn du öffentlich etwas postest, an dem Neulinge noch herumwerkeln wollen/sollen, würde ich dir das | empfehlen. Es wurde ja schon gesagt, das im Besonderen kombinierte Flags ansonsten Probleme bereiten. |
|
|
| |
|
|
|
Timotheus | Hallo AH,
Danke, dein Beispiel klappte zuerst gut, doch dann bemerkte ich dass diese Richedit gar keine ist! In sie passen auch nur 32KB.
Timo |
|
|
| |
|
|
|
Frank Abbing | Hallo Timo,
nimm diese Zeile mal mit in deinen Code, nachden dein Control erzeugt wurde: KompilierenMarkierenSeparieren Standardmäßig ist der Text in einem Richedit auch auf 32 KB voreingestellt. Die Message erhöht den Speicher auf das Maximum. |
|
|
| |
|
|
|
| Hallo Timo...
Ein Richedit hat, wenn nichts anderes festgelegt wird, eine Standartgröße von 32KB. Folgendes müßte Abhilfe schaffen: KompilierenMarkierenSeparierenWINDOWSTYLE 31+512
WINDOWTITLE "RichEdit"
WINDOW 0,0-640,440
Declare RichEdit&,DLL_HDL&
DLL_HDL&=@UseDLL($SYSPATH+"RICHED20.DLL")
LET RichEdit&=@Control("RichEdit20A","",$40000000+$10000000+4+$1000+$800000+$200000+$100000,20,20,300,300,%HWND,2112,%HINSTANCE)
@SENDMESSAGE(RichEdit&,$0400+53,0,$7FFFFFF0)
whilenot %MENUITEM=-2
WAITINPUT
wend
@DESTROYWINDOW(RichEdit&)
FREEDLL DLL_HDL&
Noch ein Tipp... Schau dir mal die Datei WINDOWS.PH im Profanverzeichnis im Ordner INCLUDES an . Suche mal nach WS_VISIBLE und den einzelnen Flags. Fällt dir was auf? Danach ruf doch einmal die Datei RichEdit.PH auf. Suche dort mal nach cchTextLimitDefault. Fällt dir dort was auf? Was steht etwas weiter darunter?? Jetzt suche mal nach + 53, rufe danach die Datei MESSAGES.PH auf und suche hier nach WM_USER. ...wenn du meine Tipps verstanden hast, kannst du nun beliebig eigene Controls erstellen. Wichtig dafür sind aber ein paar Englischkenntnisse - Realschule reicht dicke aus... |
|
|
| |
|
|