AGB  ·  Datenschutz  ·  Impressum  







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

was soll das übersetzt heißen?

Ein Thema von EMS · begonnen am 5. Jan 2013 · letzter Beitrag vom 6. Jan 2013
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
EMS

Registriert seit: 19. Dez 2012
97 Beiträge
 
#31

AW: was soll das übersetzt heißen?

  Alt 5. Jan 2013, 22:35
jetzt bleibt das programm hängen er macht die schleife nicht
ist das denn mit meinen Erklärungen so richtig oder ist da ein Fehler?
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#32

AW: was soll das übersetzt heißen?

  Alt 5. Jan 2013, 22:38
Ich hab das jetzt aus dem Kopf geschrieben ohne es zu testen. Teste du das mal:

Delphi-Quellcode:
var
  Bmp: TBitmap;
  x, y: Integer;
  s: String;
  PixCol: TColor;
  RGBCol: Integer;
  R, G, B: Byte;
  c: Char;
begin
  Bmp := TBitmap.Create;
  try
    Bmp.LoadFromFile('c:\irgendeinbild.bmp'); //irgend ein Bmp Testbild
    Bmp.PixelFormat := pf24bit; //in 24Bit Bitmap umwandeln

    s := Edit1.Text; //Edit1.Text in s übertragen

    for y := 0 to Bmp.Height - 1 do
      for x := 0 to Bmp.Width - 1 do
      begin
        PixCol := Bmp.Canvas.Pixels[x, y]; //Pixel holen
        RGBCol := ColorToRGB(PixCol); //in RGB konvertieren

        R := GetRValue(RGBCol);
        G := GetGValue(RGBCol);
        B := GetBValue(RGBCol);

        if Length(s) > 0 then c := s[1] else c := #0; //wenn kein Zeichen, dann ersatzweise #0 oder etwas anderes
        Delete(s, 1, 1); //s um ein Zeichen kürzen
        R := Ord(...);

        if Length(s) > 0 then c := s[1] else c := #0;
        Delete(s, 1, 1); //s um ein Zeichen kürzen
        G := Ord(...);

        if Length(s) > 0 then c := s[1] else c := #0;
        Delete(s, 1, 1); //s um ein Zeichen kürzen
        B := Ord(...);

        PixCol := RGB(R, G, B);

        Bmp.Canvas.Pixels[x, y] := PixCol;
      end;
  finally
    Bmp.Free;
  end;
end;
  Mit Zitat antworten Zitat
EMS

Registriert seit: 19. Dez 2012
97 Beiträge
 
#33

AW: was soll das übersetzt heißen?

  Alt 5. Jan 2013, 22:42
mhhh das ist ja mit diesen getrvalue das hatten wir ja nicht.
das mit dem R := Ord(...); kenne ich auch nicht und weiß nicht was es bedeutet?

Merkwürdig ist das mein Programm bei rneu noch passt und dann bei gneu und bneu schon nicht funktioniert?
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#34

AW: was soll das übersetzt heißen?

  Alt 5. Jan 2013, 22:52
Schon alles erwähnt. Das Problem an deinem Projekt ist, dass du zuerst mit einem Auto ankommst das du repariert haben willst, dann wird es langsam zerlegt, immer mehr und mehr, bis dann irgendwann raus kommt, dass du nur die Kurbel fürs Fenster haben willst. Soll bedeuten, dass bei all deinen Fragen und was zuletzt übrig bleib, man nicht mehr weiß was eigentlich wichtig ist.

G := GetGValue(RGBCol) gibt den Grünanteil des Pixels, also das was wir mit G := Byte(Farbe shr 8) ermittelt haben. Dafür gibt es eine fertige Funktion. Und wenn du gleich gesagt hättest was du willst, dann wäre sie früher ins Spiel gekommen.

Was könnte R := Ord(...); bedeuten? Mit etwas Fantasie könnte man meinen, dass es rneu:=ord(wert[hindex]); ist, und (...) einfach nur Platzhalter. Denn ich hab immer noch keine Ahnung was du da machst. Ich weiß, dass es irgendwas mit Verschlüsselung zu tun hat, aber ...
  Mit Zitat antworten Zitat
EMS

Registriert seit: 19. Dez 2012
97 Beiträge
 
#35

AW: was soll das übersetzt heißen?

  Alt 5. Jan 2013, 23:06
das problem ist das wir so nen paar sachen erzählt bekommen haben von unserem dozenten
und der nix anderes dann akzeptiert er meint das kann dann nur ausm Internet kommen und das ist ja alles falsch und schlecht...

ich möchte jetzt ja nur diese neuen Pixelwerte aus meinem Editfeld der Reihe nach in das
rneu,gneu,bneu rein haben

jetzt hab ich das alles so geschrieben aber er bricht die schleife nicht ab.
ich hab doch das until spalte+2 oder kann der das da nicht?




Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
hindex,bildhoehe,bildbreite,zeile,spalte,X,Y,index1,laenge_der_verschluesselung,idt{Indexdeltatext}: integer;
b:byte;
farbe,ordnungszahl,farbe1,rneu,gneu,bneu,neues_pixel:integer;
code,tex,wert:string;
ch:char;
begin
  spalte:=0;
  zeile:=0;
  tex:=Edit4.text;
  application.processmessages;
  ASSIGNFILE(f,'NeuesBild.dat');
  REWRITE(F);

  Code:=edit4.text;
  laenge_der_verschluesselung:=length(Code);
  showmessage('Länge der Verschlüsselung '+inttostr(laenge_der_verschluesselung));
  repeat
  for spalte:=1 to laenge_der_verschluesselung do
     begin
     farbe:=image1.Canvas.Pixels[spalte,0];
     wert:=tex[spalte];

     rneu:=ord(tex[spalte]);
     gneu:=ord(tex[spalte+1]);
     bneu:=ord(tex[spalte+2]);
     showmessage('Wert rneu '+inttostr(rneu));
     showmessage('Wert gneu '+inttostr(gneu));
     showmessage('Wert bneu '+inttostr(bneu));
     end;
  until spalte+2=laenge_der_verschluesselung;
Neues_Pixel:=(bneu shl 16) + (gneu shl 8)+ rneu;
Closefile(f);
end;
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#36

AW: was soll das übersetzt heißen?

  Alt 5. Jan 2013, 23:13
Du willst die Schleife abbrechen wenn die Länge der Verschlüsselung erreicht wurde
Die Variable "Spalte" gehört zur for-Schleife
Mit Break kannst du die Schleife verlassen wenn die Bedingung erfüllt ist
Die Repeat-Schleife komplett entfernen

Delphi-Quellcode:
   for spalte:=1 to laenge_der_verschluesselung do
      begin
      farbe:=image1.Canvas.Pixels[spalte,0];
      wert:=tex[spalte];

      rneu:=ord(tex[spalte]);
      gneu:=ord(tex[spalte+1]);
      bneu:=ord(tex[spalte+2]);
      showmessage('Wert rneu '+inttostr(rneu));
      showmessage('Wert gneu '+inttostr(gneu));
      showmessage('Wert bneu '+inttostr(bneu));

      If spalte = laenge_der_verschluesselung then
        break;
      end;
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<

Geändert von Helmi ( 5. Jan 2013 um 23:15 Uhr)
  Mit Zitat antworten Zitat
EMS

Registriert seit: 19. Dez 2012
97 Beiträge
 
#37

AW: was soll das übersetzt heißen?

  Alt 5. Jan 2013, 23:23
so klappt es aber wieso ging das nicht mit der repeat schleife?
ich laufe doch auf jedenfall die schleife durch.
und dann ist doch sofort das until erreicht mit
(spalte:=1) spalte + 2 ist sofort die länge meiner Zeichen im Editfeld

Ich hab jetzt aber keine idee wie ich diese schleife so hin bekomme das es so funktionert wie ich es möchte weil sobald ja die Länge wieder anders ist passen die neuen Werte für die buchstaben wieder nicht mehr...

Geändert von EMS ( 5. Jan 2013 um 23:28 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#38

AW: was soll das übersetzt heißen?

  Alt 5. Jan 2013, 23:30
Du müsstest eine Meldung bekommen ala:
[DCC Warnung] Unit2.pas(36): W1037 FOR-Schleifenvariable 'spalte' kann nach Durchlauf undefiniert sein

Überleg mal was für einen Wert "spalte" beim letzten For-Schleifen-Durchlauf hat?
Maximal den Wert von "laenge_der_verschluesselung"
Daher kann die repeat-Schleife niemals als Bedingung spalte + 2 = laenge_der_verschluesselung sein
Diese Bedingung wird niemals nie nicht true

Dadurch hast du eine Endlosschleife gebastelt die nebenbei immer und immer wieder die For-Schleife ausführt...
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
EMS

Registriert seit: 19. Dez 2012
97 Beiträge
 
#39

AW: was soll das übersetzt heißen?

  Alt 5. Jan 2013, 23:37
mhh die dürfte ja auch nur einmal durch bis zum until dann ist doch schon die abbruch bedingung erfüllt
ich seh jetzt nicht den Fehler dadranne
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#40

AW: was soll das übersetzt heißen?

  Alt 5. Jan 2013, 23:40
mhh die dürfte ja auch nur einmal durch bis zum until dann ist doch schon die abbruch bedingung erfüllt
wirklich?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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 18:32 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