Hallo EWeiss
in welcher Procedure befindet sich der hier diskutierte Code? In procedure TSpectrum.Release;? Falls Ja: Früher hast du dort SpectrumData2D[] verwendet und jetzt imgSpectrum[]?
Oder ist es eine andere Procedure - und wenn Ja, wo findet man diese in deinem Code?
Wenn es TSpectrum.Release; ist: SpectrumData2D bzw. jetzt imgSpectrum muss natürlich am Eingang zu deiner Procedure mit Daten gefüllt sein, sonst machen die Rechnereien ja gar keinen Sinn.
Zum Testen: Wie früher erwähnt: Du könntest sämtliche VB6 Prozeduren, welche etwas rechen mit dem gleichen Input abfüllen wie deine jeweils entsprechende Delphi Prozedur und dann prüfen was am Ausgang rauskommt. Nur wenn beide Versionen die gleichen Werte liefern, bist du am sicher, dass dein Programm das tut, was das Original schön längst macht
.
Alles wird gut.
V.a. wichtig ist, dass du Datentypen nicht mischst. Sonst meckert Delphi (zurecht) noch lange rum.
Mindestens in deiner zuerst veröffentlichten Version sind in TSpectrum.Release; sämtliche Werte im Array SpectrumData2D immer 0 (Null).
Trotzdem malt dein Programm Dinge auf den Schirm. Da stimmt also etwas beim Ablauf nicht.
Ob in deiner Version auch alle Elemente 0 sind kannst du ja leicht testen, indem du
assert( SpectrumData2D[x, y] = 0, 'Oh, nicht Null ;-)' );
einfügst.