Hallo @ all!
Ich code jetzt seit einigen Tagen an einem neuen Projekt für meine Facharbeit, über das ich euch deswegen noch nicht viel sagen kann.
Ich kann nur verraten, dass es etwas mit Bildern und dem BMP Dateiformat zu tun hat.
Deshalb werde ich auch versuchen, so wenig wie möglich von diesem Programm zu Posten (Lehrer können manchmal seeehr kleinlich sein ...), später stelle ich es warscheinlich unter die GNU/
GPL und ins Archiv.
Und nun zu meinem Problem: Ich habe einen Record aus den Teilen r,b und g:
--GELÖSCHT--
wird nun zuerst über CleanLayer ein leerer Farbkanal erzeugt.
Ich vermute, dass der Ursprung meiner Probleme schon hier liegt
Aber nun weiter:
--GELÖSCHT--
So, nun das Problem: Wird das Programm ausgeführt (als Beispiel verwende ich ein Bitmap mit 1*1 Pixel größe und den
rgb-Werten 255,128,64)
Dann liest die Funktion zuerst den B-Wert (muss so sein, ist bei BMP falschherum gespeichert).
Dieser wird dann dem Blau-Pixel im Record/Array bitmap.data.b abgespeichert, nachedem er vorher über ByteToBits in das Bits-Format konvertiert wurde (die Funktion stelle ich nicht online, die ist aber in Ordnung);
So, jetzt kommt der Hammer: Wird nun der nächste Wert (Grün) eingelesen, so ändern sich folgende Werte:
1. bitmap.data.g[x-1,y-1] --> gewünschter effekt, mehr will ich nicht, aber es geht noch weiter!
2. bitmap.data.b[x-1,y-1] & bitmap.data.r[x-1,y-1] & tmplayer --> ändern sich alle mit dem Grün-Kanal
So, vor lauter schreiben hab ich jetzt noch was vergessen: Diese Änderung tritt auch schon beim Einlesen von bitmap.data.b auf, also schon beim ersten Einlesevorgang.
Meine Schlussfolgerung: Delphi hat die Variablen bitmap.data.r sowie die äquivalenten Ebenen g und b + die "Leerungsebene" tmplayer miteinander Verknüpft. Ändert isch iens, ändern sich die anderen auch.
Und dabei hab ich dich am anfang extra Copy verwendet, damit das nicht passiert
So, jetzt sei ihr daran. Macht mich fertig, zeigt mir wie blöd ich bin ... (nicht ernst nehmen!)
Aber bitte sag' mir jemand, woran dieses rumgespinne liegt.
Ich programmiere jetzt schon ein Jahr Delphi und ich werd wahnsinnig!
mfG
Markus
PS1: Ich verwende Delphi 2005
PS2: BTW:In einer ähnlichen Situation hat Delphi bei mir auch schon in einer Schleife 1 to 8 runtergezählt ... ich bin bald verrückt geworden.
PS3: Ich finde euer Forum spitze
EDIT: Problem Gelöst, ich nehm den Code wieder aus dem Forum