![]() |
wieder konvertierungs problem
Hallo
Habe wieder ein umsetzungs problem von c++ nach Delphi 2x zeilen ;)
Code:
meterlphi :=(meterlphi<0.0)? 0.0: (meterlphi>128.0)? 128.0 : meterlphi;
Code:
wie müssen diese nach Delphi konvertiert werden ?
lphi+=13.5
Komme da mit dem Fragezeichen nicht zurecht. gruss Emil |
Re: wieder konvertierungs problem
Hi
Wenn das ":=" ein "=" ist, würde es so in der Art aussehen:
Code:
meterlphi :=(meterlphi<0.0)? 0.0: (meterlphi>128.0)? 128.0 : meterlphi;
Delphi-Quellcode:
if meterlphi < 0.0 then
begin meterlphi := 0.0 ; end else begin if meterlphi > 128.0 then meterlphi := 128.0; end;
Code:
lphi+=13.5
Delphi-Quellcode:
Angaben ohne Gewähr. :stupid:
lphi := lphi + 13.5;
Edit: Das mit dem Fragezeichen ist eine verkürzte Schreibweise einer if-Anweisung: Wert = <Boolscher Ausdruck> ? <wenn Ausdruck wahr, wird das hier zugewiesen> : <wenn falsch, dann das hier> Edit 2: @RavenIV Ich kaue generell nichts vor und bin auch dafür, die Leute selbst auf die Lösung kommen zu lassen, da so der Lerneffekt groß ist, aber bei so trivialen und kleinen Dingen ist eine Lösung in Ordnung. Das ist was anderes bei aufwändigem Code. Das oben hätte wohl jeder umsetzen können, der weiß, was ? und : bedeuten. :roll: |
Re: wieder konvertierungs problem
der ?-Operator in C ist gleichzustellen mit einer if..then..else Anweisung.
a<1?b:c => if a < 1 then b else c; a+=5 => a := a + 5; da gibt es nichts vergleichbares in Delphi. /edit: Mist, da war einer schneller /edit2 Kaut den Leuten doch nicht immer alles vor. Sie sollen nur einen Denkanstoss bekommen. |
Re: wieder konvertierungs problem
@Matze
Danke werde es mal testen ;) @RavenIV Jo .. aber wie von Matze beschrieben geht's schneller In VB wäre ich mir sicher gewesen ? = IIF In Delphi lern ich's noch. gruss |
Re: wieder konvertierungs problem
Oder ganz elegant als Einzeiler:
Delphi-Quellcode:
meterlphi := Max(Min(meterlphi, 128.0), 0.0);
|
Re: wieder konvertierungs problem
Zitat:
Nur so nebenbei. Habe noch ein problem bei der For Schleife Hier mal die Schleife in C++
Code:
for (lphi=0.0f; lphi<=189.0f; lphi+=13.5f)
{ z=-9.0f; x=(float)(-sin((lphi+45.0f)*M_PI/180.0f)*2.0f)-2.5f; y=(float)(-cos((lphi+45.0f)*M_PI/180.0f)*2.0f)+yposition; glTexCoord2f(0.0f,0.0f); glVertex3f(x-hd,y-hd,z); glTexCoord2f(0.0f,1.0f); glVertex3f(x-hd,y+hd,z); glTexCoord2f(1.0f,1.0f); glVertex3f(x+hd,y+hd,z); glTexCoord2f(1.0f,0.0f); glVertex3f(x+hd,y-hd,z); x+=5.0f; glTexCoord2f(0.0f,0.0f); glVertex3f(x-hd,y-hd,z); glTexCoord2f(0.0f,1.0f); glVertex3f(x-hd,y+hd,z); glTexCoord2f(1.0f,1.0f); glVertex3f(x+hd,y+hd,z); glTexCoord2f(1.0f,0.0f); glVertex3f(x+hd,y-hd,z); }
Delphi-Quellcode:
Var
lphi : GLfloat; rphi : GLfloat;
Delphi-Quellcode:
jetzt meckert der compiler über diese zeile
for lphi := 0.0 to 189.0 do lphi := lphi + 13.5;
begin z := -9.0; x := (-sin((lphi+45.0)*M_PI/180.0)*2.0)-2.5; y := (-cos((lphi+45.0)*M_PI/180.0)*2.0)+yposition; glTexCoord2f(0.0,0.0); glVertex3f(x-hd,y-hd,z); glTexCoord2f(0.0,1.0); glVertex3f(x-hd,y+hd,z); glTexCoord2f(1.0,1.0); glVertex3f(x+hd,y+hd,z); glTexCoord2f(1.0,0.0); glVertex3f(x+hd,y-hd,z); x := 5.0; glTexCoord2f(0.0,0.0); glVertex3f(x-hd,y-hd,z); glTexCoord2f(0.0,1.0); glVertex3f(x-hd,y+hd,z); glTexCoord2f(1.0,1.0); glVertex3f(x+hd,y+hd,z); glTexCoord2f(1.0,0.0); glVertex3f(x+hd,y-hd,z); end;
Delphi-Quellcode:
for lphi := 0.0 to 189.0 do
Zitat:
Es muss doch möglich sein in einer schleife GLFloat zu verarbeiten.! Hier sagt er
Delphi-Quellcode:
lphi := lphi + 13.5;
Zitat:
|
Re: wieder konvertierungs problem
Hallo Emil,
mein Vorschlag:
Delphi-Quellcode:
Freundliche Grüße
for i := 0 to 14 do
begin lphi := 13.5 * i; // ... end; |
Re: wieder konvertierungs problem
Zitat:
ja würde super passen wenn nicht wieder ne meldung mit Zitat:
Also so gut wie ich mich bisher eingearbeitet habe das konvertieren der Variablen nervt erheblich. Der compiler motzt wieder weil 13.5 = single und i = integer gruss Emil |
Re: wieder konvertierungs problem
Deklariere lphi als Extended
|
Re: wieder konvertierungs problem
Zitat:
Hatte ich ja als Integer deklariert da es mit GLFloat nicht ging. Danke für den Hinweis gruss Emil |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz