![]() |
Re: wieder konvertierungs problem
Alternativ gänge auch eine repeat- oder while-Schleife.
Delphi-Quellcode:
lphi := 0;
while (lphi < 189.0) do begin ... lphi := lphi + 13.5; end; |
Re: wieder konvertierungs problem
Hallo Mario,
sobald du Float-Werte zur (Schleifen-)Steuerung benutzt, arbeitest du nicht mehr mit exakten, sondern mit Schwellwerten. Darüberhinaus musst du dann wegen der möglichen Abbildungsfehler oft eine Epsilon-Umgebung betrachten. Es ist wirklich besser Integer-Werte zu benutzen, wenn es irgendwie möglich ist. Freundliche Grüße |
Re: wieder konvertierungs problem
Aha, eigentlich logisch, aber gewußt habe ich es noch nicht. Danke für den Tip. ;)
|
Re: wieder konvertierungs problem
Zitat:
Delphi-Quellcode:
for lphi : = 202.5 to 229.5 do
Zitat:
Das würde ja dann nicht mehr funktionieren!
Delphi-Quellcode:
habe es so gelößt
lphi := 13.5 * i
Delphi-Quellcode:
gibt bestimmt eine intelligentere methode(berechnung)
glColor3f(1.0,1.0,0.0);
lphi := 202.5; for i := 1 to 2 do begin if not (lphi = 216) then lphi := lphi + 13.5 * i else lphi := lphi + 13.5; gruss Emil |
Re: wieder konvertierungs problem
Direkt aus der Abteilung Transferwissen:
Delphi-Quellcode:
Freundliche Grüße
for i := 15 to 17 do
begin lphi := 13.5 * i; // ... end; |
Re: wieder konvertierungs problem
Zitat:
so einfach doch so umständlich(von mir) gruss Emil |
Re: wieder konvertierungs problem
ein prob hab ich noch dann läufts..
Code:
lmax=0;
rmax=0; for (i=0; i<576;i++) { ltemp=abs(wavedata[i]); if (ltemp>lmax) lmax=ltemp; } for (i=0; i<576;i++) { rtemp=abs(wavedata[i+576]); if (rtemp>rmax) rmax=rtemp; } lphi=(float)lmax; rphi=(float)rmax;
Delphi-Quellcode:
Die beiden Wertelmax := 0; rmax := 0; for i := 0 to 576 do begin ltemp := abs(wavedata[i]); if (ltemp>lmax) then lmax := ltemp; end; for i := 0 to 576 do begin rtemp := abs(wavedata[i+576]); if (rtemp>rmax) then rmax := rtemp; end; lphi := lmax; rphi := rmax;
Delphi-Quellcode:
müßten wieder nach single konvertiert werden da sonst integer angenommen wird.
lphi := lmax;
rphi := rmax; Dann sind die werte aber zu hoch und die VU ist auf anschlag. ;) PS: Gibt es eigentlich keine Grundregeln wie Integer zu single konvertiert werden kann? Ähnlich wie FloatToStr usw... Float wäre doch auch in Delphi single warum gibt es dann nicht sowas wie IntToFloat gruss Emil |
Re: wieder konvertierungs problem
Hallo Emil,
wenn wavedata ein array of Integer ist, dann geht es auch so:
Delphi-Quellcode:
Eine Konvertierung von Integer nach Float kann der Compiler automatisch vornehmen. Umgekehrt ist es wegen des Informationsverlustes in Pascal (Pascal ist nicht Basic oder Perl - alles ist strikt) nicht erlaubt, sodass du Trunc() oder andere Funktionen benutzen musst.
uses
Math; var lphi, rphi: Single; wavedata: array of Integer; begin lphi := MaxIntValue(Copy(wavedata, 0, 576)); rphi := MaxIntValue(Copy(wavedata, 576, 576)); end; Freundliche Grüße |
Re: wieder konvertierungs problem
Zitat:
Habe mir erlaubt dir eine PN zu schicken. Aber hier die Deklaration von wavedata
Delphi-Quellcode:
Daten werden so eingelesen!
Type
TWaveData = Array[0..576] Of byte; PWaveData = ^TWaveData; end;
Delphi-Quellcode:
In der PN habe ich mal näher geschildert (als ich die Antwort hier noch nicht kannte)
wavedata := @This_Mod^.WaveformData[0][0];
wo das problem liegt. Ich denke die berechnung über 'abs' so wie ursprünglich aufgeführt kann nicht funktionieren da die variablen ganz anderes deklariert sind in c++ Bekomm auch unabhängig jetzt von der konvertierung immer einen wert von 255. Was noch erschwerend hinzukommt ist halt das die konvertierung nach Single kläglich scheitert. Deine Variante habe ich mal geprüft geht aber wegen dem Array nicht.. Werd mal versuchen die umzustricken. EDIT: geht nicht wieder wegen konvertierungs problemen.. Danke wie immer Emil |
Re: wieder konvertierungs problem
Muss das nochmal aufgreifen.
Irgendwie will das immer noch nicht. Sieht aus wie ein schleichendes irgendetwas hat aber nichts mit der Visualisierung eines realen VU Meters zu tun. Niemand ne Idee wo oder was da falsch sein könnte ? Der Quelltext ist im SourceCode Forumsbereich. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:13 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-2025 by Thomas Breitkreuz