Deutsch
Stammtisch & Café

XProfan 10 - Letzte Änderungen

 
- 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)
 
25.08.2006  
 



@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.
 
25.08.2006  
 




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
 
25.08.2006  
 




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




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
!Def InRange(3) If( (&(1) >= &(2)) and (&(1) <= &(3)),&(1),0)
1=Wert, 2=Min, 3=Max
wenn im Bereich, dann liefere Wert sonst liefere 0

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
!Proc InRange
Parameters Wert&, Min&, Max&
Return If( (Wert& >= Min&) and (Wert& <= Max&),Wert&,0)

EndProc


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
Class Klasse=Schmarrn#(24)
Declare Hilfsschmarrn#
Dim Hilfsschmarrn#,Klasse
Long Hilfsschmarrn#.Schmarrn#,0=$0815

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  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

10.197 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