AGB  ·  Datenschutz  ·  Impressum  







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

Brauche Hilfe beim Code erklären

Ein Thema von Berserker89 · begonnen am 24. Jun 2010 · letzter Beitrag vom 25. Jun 2010
 
Berserker89

Registriert seit: 24. Jun 2010
2 Beiträge
 
Delphi 2 Desktop
 
#1

Brauche Hilfe beim Code erklären

  Alt 24. Jun 2010, 15:50
Hallo Delphi-Praxis,
brauche unbedingt eure Hilfe und zwar habe ich eine Klausur verhauen in Delphi und nun soll ich morgen ein Programm, welches ich bekommen habe, vor der Klasse präsentieren und erklären um meine Note zu verbessern. Es handelt sich um ein Programm, welches Texte in einem Bild verstecken soll, die man dann wieder auslesen kann(Bitmanipulation oder Steganographie). Dabei sollen in einer .bmp nur die letzten beiden Bits manipuliert werden. Wir sind 3 Leute und mein Part ist das Verstecken im Bild. Nun habe ich folgenden Code und auch schon einige Kommentare dazu.

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var hoehe, breite, x, y:integer;
    R, G, B, bintext:string;
    farbe:longint;
begin
  breite := form1.image1.Width - 1;
  hoehe := form1.Image1.Height - 1;
  bintext := strtobin(memo1.Text) + '0100000010001001'; //At Promill (abbruchbedingung)
  if length(bintext) mod 3 <> 0 then
  repeat
  bintext := bintext + '0'
  until
  length(bintext) mod 6 = 0;
  if ceil(length(bintext)/ 3) <= form1.Image1.Height * form1.Image1.Width then //überprüfung ob der text in das bild passt
  for y := 0 to hoehe do //schleife um die y-achse durch zu gehen
  begin
    for x := 0 to breite do //schleife um die x-achse durch zu gehen
    begin
      farbe := colortorgb(form1.Image1.Canvas.Pixels[x,y]); //dier farbwerte des aktuellen pixels wird ermittelt
      R := bytetobin(getRvalue(farbe)); //der rot anteil wird herausgefiltert und in eine binärzahl umgewandelt
        R[7] := bintext[1]; //das vorletzte bit wird geändert
        R[8] := bintext[2]; //das letzte bit wird geändert
        delete(bintext, 1, 2); //die geschriebenen bits werden abgeschnitten
      G := bytetobin(getGvalue(farbe)); //der grün anteil wird herausgefiltert und in eine binärzahl umgewandelt
        G[7] := bintext[1]; //das vorletzte bit wird geändert
        G[8] := bintext[2]; //das letzte bit wird geändert
        delete(bintext, 1, 2); //die geschriebenen bits werden abgeschnitten
      B := bytetobin(getBvalue(farbe)); //der blau anteil wird herausgefiltert und in eine binärzahl umgewandelt
        B[7] := bintext[1]; //das vorletzte bit wird geändert
        B[8] := bintext[2]; //das letzte bit wird geändert
        delete(bintext, 1, 2); //die geschriebenen bits werden abgeschnitten
      form1.Image1.Canvas.Pixels[x,y] := rgb(bintobyte(R), bintobyte(G), bintobyte(B)); //die geänderten farbwerte werden gemalt
      if bintext = 'then //wenn keine zeichem mehr vorhanden sind...
      begin
        form2.Visible := false; //ausblenden der texteingabe
        exit; //abbruch der schleifen
      end;
    end;
  end;
end;
Was ich nich verstehe und nicht erklären kann ist wieso bei breite und höhe (-1) ist und den Teil :

Delphi-Quellcode:
  bintext := strtobin(memo1.Text) + '0100000010001001'; //At Promill (abbruchbedingung)
  if length(bintext) mod 3 <> 0 then
  repeat
  bintext := bintext + '0'
  until
  length(bintext) mod 6 = 0;
Wäre echt super nett, wenn jemand mit helfen würde !
  Mit Zitat antworten Zitat
 


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 05:22 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