AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi [GELÖST!] Array/Record wird ohne Zugriff gändert!
Thema durchsuchen
Ansicht
Themen-Optionen

[GELÖST!] Array/Record wird ohne Zugriff gändert!

Ein Thema von markusj · begonnen am 14. Dez 2005
Antwort Antwort
markusj

Registriert seit: 9. Dez 2005
Ort: Kandel
408 Beiträge
 
#1

[GELÖST!] Array/Record wird ohne Zugriff gändert!

  Alt 14. Dez 2005, 15:00
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
Markus
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:30 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