Stammtisch & Café | | | | - Seite 1 - |
| RGH | XProfan 10 nähert sich langsam aber sicher der Release-Version. Die nächste Subscriptionslieferung wird also Version RC1 (ReleaseCandidat 1) sein.
Folgende Syntaxänderungen im OpenGL-Bereich habe ich noch eingebaut:
Die OGL-Funktionen Bitmapfont und Outlinefont erhalten einen weiteren Parameter, nämlich das Handle eines mit Create(Font,...) erzeugten Fonts. Die bisherige Lösung mit UseFont hatte den Nachteil, daß sie natürlich nur funktionierte, wenn das OpenGL-Fenster das Hauptfenster des Programmes war. So schauts jetzt aus:
FontNr% = oGL(BitmapFont, hFont&) FontNr% = oGL(OutlineFont, hFont&, mode!)
Ihr müßt also alle Programme, die Fonts verwenden, entsprechend anpassen. Ich denke aber, besser jetzt vor dem Release noch eine Syntaxänderung, als später der Kompatiblität wegen eine Krücke!
Gruß Roland |
| | | Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 10.08.2006 ▲ |
| |
| | | | - Seite 3 - |
| | RGH | [quote:fefed84ff0=Dietmar Horn]Kannst Du das noch irgendwie bis zum endgültigen Erscheinen von XProfan 10.0 so abändern, daß auch diese Kleinigkeit wieder so funktioniert, wie bereits seit Jahren?[/quote:fefed84ff0] Ich denke, das bekomme ich hin ... allerdings erst nach einer morgen Abend beginnenden Woche Urlaub mit der Familie in Antibes (Südfrankreich). Also bitte nicht wurdern, wenn ich mich die nächsten Tage hier zurückhalte.
Gruß Roland |
| | | Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 25.08.2006 ▲ |
| |
| | Michael Dell | Erholt Euch gut! |
| | | Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 25.08.2006 ▲ |
| |
| | | [quote:89be1ff2e1]Ich denke, das bekomme ich hin ... allerdings erst nach einer morgen Abend beginnenden Woche Urlaub mit der Familie in Antibes (Südfrankreich). Also bitte nicht wurdern, wenn ich mich die nächsten Tage hier zurückhalte. [/quote:89be1ff2e1] Hallo Roland Zuerst einmal einen schönen Urlaub in Frongreisch - Aber wer schiesst den Mist auf der Profan-Site zwischenzeitlich ab ? Es wird nämlich immer schlimmer (reim dich oder ich fress dich) |
| | | | |
| | | @Dietmar: Ich habe auch so manch Riesenprojekte bei denen diese Meldung zu Problemen führte.
Darum hab ich vor ein paar Tagen diese Funktion in die Babyklappe gelegt: KompilierenMarkierenSeparieren Und nun musste ich nur noch in den Programmen aus Getstring$(Blb&,Getcursel(Blb&)) einfach Lb_getselstring(blb&) machen.
Noch einfacher wäre es sicherlich gewesen einfach ein getcursel_ Ersatz zu schreiben so hätte man nur alle Vorkommen von getcursel in getcursel_ ersetzen müssen. (was auch in riesenprojekten sehr fix geht)
[quote:02b4b5210f=Horst Horn][quote:02b4b5210f]Ich denke, das bekomme ich hin ... allerdings erst nach einer morgen Abend beginnenden Woche Urlaub mit der Familie in Antibes (Südfrankreich). Also bitte nicht wurdern, wenn ich mich die nächsten Tage hier zurückhalte. [/quote:02b4b5210f] Hallo Roland Zuerst einmal einen schönen Urlaub in Frongreisch - Aber wer schiesst den Mist auf der Profan-Site zwischenzeitlich ab ? Es wird nämlich immer schlimmer (reim dich oder ich fress dich) [/quote:02b4b5210f] Vielleicht stellt Roland wieder das Forum so ein das man nur Posten kann wenn man registriert und eingeloggt ist. |
| | | | |
| | RGH | [quote:26a829c94a=iF]Vielleicht stellt Roland wieder das Forum so ein das man nur Posten kann wenn man registriert und eingeloggt ist.[/quote:26a829c94a] Genau das werde ich machen! (Und möglicherweise werde ich das dann vorerst beibehalten.)
Gruß Roland |
| | | Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 25.08.2006 ▲ |
| |
| | Michael Wodrich | Schade. Ich bekomme mit Select keine Range-Bereiche hin. Gerade bei Aufzählungen können mehrere solcher Zahlengruppen zu einer Vereinfachung führen.
Hier mal ein kleines Beispiel, daß mittels Select gelöst werden sollte: KompilierenMarkierenSeparieren!
Case 21, 24, 25, 27..32, 34, 35, 38
temp = temp - 1
Case 33, 36, 37, 39, 40
temp = temp - 2
Ja es ist ein sehr kleiner Bereich, aber gerade deshalb so überschaubar.
Mein Lösungsversuch: KompilierenMarkierenSeparieren!
Declare Wert1%, Wert2%, Wert3%, Visual$
Visual$=".,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.," +
"=,=,21-1,=,=,24-1,25-1,=,27-1 R,28-1 R,29-1 R,30-1 R,31-1 R,32-1 R,33-2,34-1,35-1,36-2,37-2,38-1,39-2,40-2,=,=," +
".,.,.,.,.,.,."
cls
WhileLoop 19,42
Wert1% = &loop
Wert2% = &loop
Wert3% = &loop
Select Wert1%
CaseOf 21, 24, 25, >= 27, <= 32, 34, 35, 38 1. Versuch
Sub Wert1%, 1
CaseOf 33, 36, 37, 39, 40
Sub Wert1%, 2
EndSelect
Select Wert2%
CaseOf 21, 24, 25, 34, 35, 38
Sub Wert2%, 1
CaseOf 33, 36, 37, 39, 40
Sub Wert2%, 2
CaseOf >= 27, <= 32 2. Versuch (separat)
Sub Wert2%, 1
EndSelect
Select Wert3%
CaseOf 21, 24, 25, 34, 35, 38
Sub Wert3%, 1
CaseOf 33, 36, 37, 39, 40
Sub Wert3%, 2
CaseOf 27, 28, 29, 30, 31, 32 Range aufgedröselt :-<
Sub Wert3%, 1
EndSelect
print &loop,"!",Wert1%,"!",Wert2%,"!",Wert3%,"!",SubStr$(Visual$,&loop,",")
EndWhile
WaitKey
end
Wenn es dann um größere Range-Bereiche geht, dann ist der Workaround mit dem Werte ausschreiben nicht mehr so günstig und man muß zusätzlich mit IF-Statements arbeiten.
Könnten Select solche Zahlenbereiche beigebracht werden?
Schöne Grüße Michael Wodrich
PS: Mir ist doch eine (unsaubere) Lösung eingefallen: KompilierenMarkierenSeparieren!
Def InRange(3) If( (&(1) >= &(2)) and (&(1) <= &(3)),&(2),0)
1=Wert, 2=Min, 3=Max
wenn im Bereich, dann liefere Min. sonst liefere 0
Declare Wert1%, Wert2%, Wert3%, Visual$
Visual$=".,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.," +
"=,=,21-1,=,=,24-1,25-1,=,27-1 R,28-1 R,29-1 R,30-1 R,31-1 R,32-1 R,33-2,34-1,35-1,36-2,37-2,38-1,39-2,40-2,=,=," +
".,.,.,.,.,.,."
cls
WhileLoop 19,42
Wert1% = &loop
Select Wert1%
CaseOf 21, 24, 25, InRange(Wert1%,27,32), 34, 35, 38
Sub Wert1%, 1
CaseOf 33, 36, 37, 39, 40
Sub Wert1%, 2
EndSelect
print &loop,"!",Wert1%,"!",SubStr$(Visual$,&loop,",")
EndWhile
WaitKey
end
|
| | | Programmieren, das spannendste Detektivspiel der Welt. | 25.08.2006 ▲ |
| |
| | Timotheus | Zwei Sachen noch von mir:
Einmal, das wenn man eine Wurzel aus einer negativen Zahl zieht, dann stürtzt das Programm mit einem Anwendungsfehler ab, und zweitens wäre da noch die Sache mit dem Befehl, mit dem man die Unterfunktionen einer Funktion direkt aufrufen kann, Also in einem definierten Bereich von Create bsw. direkt .Button() aufrufen können, oder bei db einfach Go(), Seek() aufrufen. Letztes mal wurde das einfach ignoriert.
Timo |
| | | | |
| | Jac de Lad | XProfan kann nicht mit komplexen Zahlen umgehen, deshalb funktioniert auch die Wurzel der negativen Zahl nicht. (Aber ich denke, das hast du schon gewusst und du wolltest nur auf den Absturz aufmerskam machen, den man durch eine Fehlermeldung verhindern kann!) Allerdings ist das Wurzelverhalten sowieso etwas merkwürdig: Es funktioniert bei gebrochenen Zahlen unter Umständen nicht (ist bei Delphi, auch in der neusten Version 2006, genau so).
Jac |
| | | Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 25.08.2006 ▲ |
| |
| | Michael Wodrich | Das mit den Unterfunktionen: Sieh es wie Namensbereiche. Wenn es mehrere Seek gibt ist es besser wenn dabei steht wo es hingehört. Und ob so etwas wie ein With...EndWith für Funktionen so gut ist möchte ich bezweifeln.
Schöne Grüße Michael Wodrich |
| | | Programmieren, das spannendste Detektivspiel der Welt. | 25.08.2006 ▲ |
| |
| | | [quote:f4e49dc4ba=Michael Wodrich]Und ob so etwas wie ein With...EndWith für Funktionen so gut ist möchte ich bezweifeln.[/quote:f4e49dc4ba]Naja da wären wir wohl wieder bei den Klassen... |
| | | | |
| | RGH | [quote:9d2a28e7db=Michael Wodrich]PS: Mir ist doch eine (unsaubere) Lösung eingefallen: [/quote:9d2a28e7db] So unsauber kommt mir diese Lösung zwar nicht vor, aber sie enthält noch einen kleinen Fehler. Die definierte Funktion muß so aussehen: KompilierenMarkierenSeparieren Der Wert und nicht Min muß bei Übereinstimmung zurückgeliefert werden. Bei CaseOf wird der Wert hinter dem Select mit dem Wert hinter CaseOf verglichen. Wenn diesem kein Operator vorangestellt ist, wird bei Gleicheit der Code des CaseOf-Zweiges ausgeführt.
Außerdem würde ich die Funktion so schreiben: KompilierenMarkierenSeparieren Einzeilige Funktionen mit DEF und der Parameterstack gelten als überholt, auch wenn sie in XProfan 10 noch unterstützt werden.
Gruß Roland |
| | | Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 10.09.2006 ▲ |
| |
| | Jac de Lad | @Roland: Ich weiß, du willst nichts mehr in XProfan 10 einbauen, aber wäre es möglich demnächst Bereiche in Klassen einzufügen? Die Bezeichner mit # in Klassen sind laut Hilfe Strings, und ich hatte auch Probleme darauf wie auf einen Bereich zuzugreifen: KompilierenMarkierenSeparieren Klappt nicht und die anderen Bereichsfunktionen auch nicht...das wäre aber meiner Meinung nach seeeehr praktisch!
Jac |
| | | Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 10.09.2006 ▲ |
| |
|
AntwortenThemenoptionen | 10.197 Betrachtungen |
ThemeninformationenDieses Thema hat 13 Teilnehmer: |