AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit TColor

Ein Thema von gangs-taas · begonnen am 4. Sep 2010 · letzter Beitrag vom 6. Sep 2010
Antwort Antwort
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#1

AW: Problem mit TColor

  Alt 4. Sep 2010, 14:26
Also ich denke, dass das Problem damit zusammen hängen könnte, dass du (und wie du) ein TImage übergibst. Nimm stattdessen doch ein TPicture oder der Einfachkeit halber gleich ein TBitmap. Beim Create übergibst du dann das Bitmap und weist dem Bitmap-Objekt von deinem "TCodieren" dieses Bild dann zu. Dann sollte es eigentlich funktionieren...
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#2

AW: Problem mit TColor

  Alt 5. Sep 2010, 12:15
es geht trotzdem nicht
ich weiß einfach nicht weiter ..
Farbe ist immer null ..

ich glaub ich geb auf und stell dann ein fremdes steganografie-programm vor, dass funktioniert ...

ich häng trotzdem mal mein ganzes projekt als anhang ran, vielleicht hat einer von euch ein wenig zeit und kann sich das anschauen und mir sagen, was ich falsch gemachth ab ...
Angehängte Dateien
Dateityp: 7z Steganografie.7z (17,1 KB, 2x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#3

AW: Problem mit TColor

  Alt 5. Sep 2010, 12:26
Zitat:
Delphi-Quellcode:
Result := TColor(Integer(IntToBin(BValue) + IntToBin(GValue)
                     + IntToBin(RValue)));
Das Zusammensetzen geht wohl auch voll schief.

Prüf doch nochmal, was du da rechnest:
- du setzt Strings zusammen
- machst von dem String einen typecast nach Integer
- und wunderst dich dann, daß da kein entsprechender "Integer"-Wert rauskommt.

Entweder du korregierst die String>Integer-Konvertierung oder nutz doch einfach Delphi-Referenz durchsuchenRGB.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#4

AW: Problem mit TColor

  Alt 5. Sep 2010, 12:52
Zitat:
Delphi-Quellcode:
Result := TColor(Integer(IntToBin(BValue) + IntToBin(GValue)
                     + IntToBin(RValue)));
Das Zusammensetzen geht wohl auch voll schief.

Prüf doch nochmal, was du da rechnest:
- du setzt Strings zusammen
- machst von dem String einen typecast nach Integer
- und wunderst dich dann, daß da kein entsprechender "Integer"-Wert rauskommt.

Entweder du korregierst die String>Integer-Konvertierung oder nutz doch einfach Delphi-Referenz durchsuchenRGB.
Warum geht das denn nicht ?
ich möchte doch aus 3 mal 8 bit 1mal 24 bit machen
sprich z.B. (irg. zufällige zahlen in dem beispiel jetzt ..)
'00000001'+'10011001'+01110011' => '000000011001100101110011'
und ich dachte ich reihe die Strings aneinander und sag dann, das was man dann hat (sind dann ja einsen und nullen), soll halt ein integer wert sein

aber der fehler leigt ja irg. schon davor nämlich darin, dass 'farbe' immer den Wert Null hat ...

Geändert von gangs-taas ( 5. Sep 2010 um 12:54 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Problem mit TColor

  Alt 5. Sep 2010, 13:05
So kannst du es versuchen
Delphi-Quellcode:
function ColorFromRGB( const RValue, GValue, BValue : Byte ) : TColor;
begin
  Result := TColor( ( BValue shl 8 + GValue ) shl 8 + RValue );
end;
Dein Konstrukt Integer( '00001010000100010010001' ) ergibt eigentlich nichts Substantielles
Vor allem, woher soll der Compiler wissen, dass es sich hierbei um eine Binär-Kodierung handelt?
Könnte ja jedes beliebige Zahlensystem sein. Vorzugsweise würde er das Dezimal-System benutzen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 5. Sep 2010 um 13:08 Uhr)
  Mit Zitat antworten Zitat
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#6

AW: Problem mit TColor

  Alt 5. Sep 2010, 13:41
hey,
vielen dank
ich glaub das war (anscheinend) doch der hauptfehler in meiner CodierUnit..

könnt ihr mir noch einmal helfen und mir einen einfachen Weg (vor)-sagen, mit dem ich aus mehreren Bits (die ich beim Decodieren bekomme) wieder ein Byte (und dann einen Buchstaben) erzeugen kann ?

mich bringen die ganzen bits irg. durcheinander und das funktioniert alles nicht so wie ich dachte, dass es funktionieren müsse...

EDIT :

ich hab das hier versucht :

Delphi-Quellcode:
 function TDecodieren.BitToBuch(Bit1, bit2, bit3, bit4, bit5, bit6,
                               bit7, bit8: Integer) : Char;
var
  ZwischenInt : Integer ;
begin
  ZwischenInt := 00000000;
  if Bit1 = 1 then
    ZwischenInt := ZwischenInt or 10000000;
  if Bit2 = 1 then
    ZwischenInt := ZwischenInt or 01000000;
  if Bit3 = 1 then
    ZwischenInt := ZwischenInt or 00100000;
  if Bit4 = 1 then
    ZwischenInt := ZwischenInt or 00010000;
  if Bit5 = 1 then
    ZwischenInt := ZwischenInt or 00001000;
  if Bit6 = 1 then
    ZwischenInt := ZwischenInt or 00000100;
  if Bit7 = 1 then
    ZwischenInt := ZwischenInt or 00000010;
  if Bit8 = 1 then
    ZwischenInt := ZwischenInt or 00000001;
  Result := Chr(ZwischenInt);
aber irgendwie kommt da nur mist raus .. (obwohl die Bits den Buchstaben T ergeben )

Geändert von gangs-taas ( 5. Sep 2010 um 13:45 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Problem mit TColor

  Alt 5. Sep 2010, 13:59
Delphi-Quellcode:
 function TDecodieren.BitToBuch(Bit1, bit2, bit3, bit4, bit5, bit6,
                               bit7, bit8: Integer) : Char;
var
  ZwischenInt : Integer ;
begin
  ZwischenInt := 00000000; // Kann man so lassen ... ist aber witzig :)
  if Bit1 = 1 then
    ZwischenInt := ZwischenInt or 128; // 10000000;
  if Bit2 = 1 then
    ZwischenInt := ZwischenInt or 64; // 01000000;
  if Bit3 = 1 then
    ZwischenInt := ZwischenInt or 32; // 00100000;
  if Bit4 = 1 then
    ZwischenInt := ZwischenInt or 16; // 00010000;
  if Bit5 = 1 then
    ZwischenInt := ZwischenInt or 8; //00001000;
  if Bit6 = 1 then
    ZwischenInt := ZwischenInt or 4; // 00000100;
  if Bit7 = 1 then
    ZwischenInt := ZwischenInt or 2; // 00000010;
  if Bit8 = 1 then
    ZwischenInt := ZwischenInt or 1; // 00000001;
  Result := Chr(ZwischenInt);
aber irgendwie kommt da nur mist raus .. (obwohl die Bits den Buchstaben T ergeben )
Wenn du 00000100 schreibst, dann ist das ein Integer mit dem Wert 100.
Von den führenden Nullen lässt sich der Compiler nicht beeindrucken.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Micha88
(Gast)

n/a Beiträge
 
#8

AW: Problem mit TColor

  Alt 6. Sep 2010, 08:02
es geht trotzdem nicht
ich weiß einfach nicht weiter ..
Farbe ist immer null ..
null ist nicht 0
null ist "nichts" und 0 ist 0.

Aussprache null ˌnʌl.

Geändert von Micha88 ( 6. Sep 2010 um 08:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#9

AW: Problem mit TColor

  Alt 6. Sep 2010, 09:06
ColorToRGB()
RGB()
GetRValue()
GetGValue()
GetBValue()
  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 13:45 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