Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Steganographie

  Alt 12. Feb 2011, 08:10
Vor allem solltest du den Quelltext formatieren.
Schau mal welche Variante du besser und schneller erfassen kannst.
Mit dem eigenen Code geht das dann auch viel besser.

Variante a
Delphi-Quellcode:
procedure machwas;
begin
for idx:=0 to 100 do
begin
ShowMessage(IntToStr(idx));
if idx>50 then ShowMessage('Toll') else ShowMessage('nee');
end;
ShowMessage(IntToStr(idx));
end;
Variante b
Delphi-Quellcode:
procedure MachWas;
begin
  for idx := 0 to 100
  do
    begin
      ShowMessage( IntToStr( idx ) );
      if idx > 50
      then
        ShowMessage( 'Toll' )
      else
        ShowMessage( 'ja' );
    end;
  ShowMessage( IntToStr( idx ) );
end;
Und wenn der Formatierer es unterstützen würde, würde ich es auch gerne so haben wollen
Delphi-Quellcode:
procedure MachWas;
begin
  for
    idx := 0 to 100
  do
    begin
      ShowMessage( IntToStr( idx ) );
      if
        idx > 50
      then
        ShowMessage( 'Toll' )
      else
        ShowMessage( 'ja' );
    end;
  ShowMessage( IntToStr( idx ) );
end;
EDIT: ich habe deinen Quelltext mal durch den Delphi-Formatter gejagt und stelle jetzt sofort fest, dass auf jeden Fall das da am Schluss noch ein end; fehlt
Delphi-Quellcode:
procedure TForm1.Button6Click( Sender : TObject );
var
  x, y, laenge, letter : integer;
  r, g, b : byte;
  color : longint;
begin

  laenge := length( memo2.Text );
  letter := 1;

  for y := 1 to 100 do
    begin
      for x := 1 to 100 do
        begin

          color := colortorgb( image1.Canvas.Pixels[x, y] );
          r := getRValue( color );
          g := getGValue( color );
          b := getBValue( color );

          if ( r mod 2 ) <> ( strtoint( memo2.lines.Text[letter] ) )
          then
            begin
              if r mod 2 = 1
              then
                r := r - 1
              else
                r := r + 1;
            end;

          if letter = laenge
          then
            begin
              image1.Canvas.Pixels[x, y] := RGB( r, g, b );
              exit;
            end;

          letter := letter + 1;

          if ( g mod 2 ) <> ( strtoint( memo2.Text[letter] ) )
          then
            begin
              if g mod 2 = 1
              then
                g := g - 1
              else
                g := g + 1;
            end;

          if letter = laenge
          then
            begin
              image1.Canvas.Pixels[x, y] := RGB( r, g, b );
              exit;
            end;

          letter := letter + 1;

          if ( b mod 2 ) <> ( strtoint( memo2.Text[letter] ) )
          then
            begin
              if b mod 2 = 1
              then
                b := b - 1
              else
                b := b + 1;
            end;

          if letter = laenge
          then
            begin
              image1.Canvas.Pixels[x, y] := RGB( r, g, b );
              exit;
            end;

          letter := letter + 1;

          image1.Canvas.Pixels[x, y] := RGB( r, g, b );

        end;

    end;
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 (12. Feb 2011 um 08:26 Uhr)
  Mit Zitat antworten Zitat