AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

wieder konvertierungs problem

Ein Thema von EWeiss · begonnen am 21. Mär 2007 · letzter Beitrag vom 25. Mär 2007
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
EWeiss
(Gast)

n/a Beiträge
 
#1

wieder konvertierungs problem

  Alt 21. Mär 2007, 17:55
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:
lphi+=13.5
wie müssen diese nach Delphi konvertiert werden ?
Komme da mit dem Fragezeichen nicht zurecht.

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: wieder konvertierungs problem

  Alt 21. Mär 2007, 18:02
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
lphi := lphi + 13.5; Angaben ohne Gewähr.

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.
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: wieder konvertierungs problem

  Alt 21. Mär 2007, 18:04
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.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

Re: wieder konvertierungs problem

  Alt 21. Mär 2007, 18:09
@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
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: wieder konvertierungs problem

  Alt 21. Mär 2007, 18:23
Oder ganz elegant als Einzeiler:
meterlphi := Max(Min(meterlphi, 128.0), 0.0);
Andreas
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

Re: wieder konvertierungs problem

  Alt 21. Mär 2007, 18:44
Zitat von shmia:
Oder ganz elegant als Einzeiler:
meterlphi := Max(Min(meterlphi, 128.0), 0.0);
Das kommt der IIF anweisung in VB am nächsten
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:
      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;
jetzt meckert der compiler über diese zeile
for lphi := 0.0 to 189.0 do
Zitat:
[Pascal Error] VisCDRom.pas(775): E2032 For loop control variable must have ordinal type
Ich benötige aber die Variablen als GLfloat
Es muss doch möglich sein in einer schleife GLFloat zu verarbeiten.!

Hier sagt er
lphi := lphi + 13.5;
Zitat:
[Pascal Hint] VisCDRom.pas(775): H2135 FOR or WHILE loop executes zero times - deleted
Gruss Emil
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: wieder konvertierungs problem

  Alt 21. Mär 2007, 20:45
Hallo Emil,

mein Vorschlag:

Delphi-Quellcode:
for i := 0 to 14 do
begin
  lphi := 13.5 * i;
  // ...
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

Re: wieder konvertierungs problem

  Alt 21. Mär 2007, 20:56
Zitat von marabu:
Hallo Emil,

mein Vorschlag:

Delphi-Quellcode:
for i := 0 to 14 do
begin
  lphi := 13.5 * i;
  // ...
end;
Freundliche Grüße
Du meinst weil 189/14 = 13.5
ja würde super passen wenn nicht wieder ne meldung mit
Zitat:
[Pascal Error] VisCDRom.pas(770): E2010 Incompatible types: 'Integer' and 'Extended'
kommen würde...

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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: wieder konvertierungs problem

  Alt 21. Mär 2007, 20:59
Deklariere lphi als Extended
Markus Kinzler
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

Re: wieder konvertierungs problem

  Alt 21. Mär 2007, 21:03
Zitat von mkinzler:
Deklariere lphi als Extended
ja sorry habe es gerade bemerkt
Hatte ich ja als Integer deklariert da es mit GLFloat nicht ging.

Danke für den Hinweis

gruss Emil
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz