Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Memofeld in Ord Werte übertragen (https://www.delphipraxis.net/172363-memofeld-ord-werte-uebertragen.html)

EMS 28. Dez 2012 19:28

Delphi-Version: 5

Memofeld in Ord Werte übertragen
 
Hallo
Ich habe ein Memofeld und möchte hier nun gerne einen Text rein schreiben können der dann
in die Zahlen werte mit dem ord Befehl erzeugt wird.
Wie mache ich das am besten?
Mit einem Einzelnen Wert aus einem Editfeld bekomme ich es hin aber nicht aus einem Memo feld?

Bummi 28. Dez 2012 19:40

AW: Memofeld in Ord Werte übertragen
 
da ich nicht weiß was Du vorhast, vielleicht ist hierin das enthalten was Du suchst ...

Delphi-Quellcode:
type
 //TByteArray=Array of Byte; // nur für AnsiStrings
 TByteArray=Array of Word;
Var
 i:Integer;
 ba:TByteArray;
begin
  SetLength(ba,Length(Memo1.Text));
  for I := 1 to Length(memo1.Text) do
      begin
        ba[i-1] := Ord(memo1.Text[i]);
        ListBox1.Items.Add(IntToStr(ba[i-1]));
      end;

end;

EMS 28. Dez 2012 19:48

AW: Memofeld in Ord Werte übertragen
 
mhh ich möchte so ein Programm bauen zum Text in Bilder verstecken...
So wie sich unsere Lehrer das vorstellt mit den Befehlen die wir kennen.
Dieses ListBox1.Items.Add kenne ich nicht bzw hatten wir nicht

Dazu hole ich mir nun bmp bilder und lass die durchlaufen und speicher jedes Pixel als Integer in einer Datei ab.
Diese Datei kann ich nun auch wieder öffnen und damit das Bild wiederherstellen.
Nun möchte ich gerne diesen Text der zu verstecken ist in einem Memofeld eingeben.
Hier soll dann jedes Zeichen in die ASCII Zahl gewandelt werden. Diese möchte ich dann einfach zu dem Pixel 1,2,3,4,5 in der Ersten Zeile dazu Addieren.
Dann hab ich das schon einmal versteckt.
Zum auslesen sag ich dann das die Ursprungsdatei mit der manipolierten vergleicht werden soll und dann der differenz betrag errechnet werden soll und diese Zahl soll dann als ASCII Zeichen wiedergeben werden und dann wieder in meinem Memofeld stehen.

:-D

Bummi 28. Dez 2012 20:45

AW: Memofeld in Ord Werte übertragen
 
Nachdem bei "echter Steganographie" eine sichtbare Änderung der Datei möglichst unterbleiben soll und Du auf Bitebene arbeiten müsstest, vermutet ich dass Du eher das was Du in http://www.delphipraxis.net/172362-p...ml#post1196991 angefangen hast mit einem Memo fortführen möchtest. Der einzige Unterschied ist eigentlich dass Du nicht jedes mal ein Byte aus einer Datei liest, sondern Dir einen "Ord-Wert" nach dem anderen aus dem Text des Memos holst, also irgendetwas in der Art:

Delphi-Quellcode:
Function GetFarbeFromString(const s:String;Position:Integer):TColor;
begin
  if length(s)<=Position then
    Result := Ord(s[Position])
  else
    Result := clBlack;
end;

procedure TForm1.Button1Click(Sender: TObject);
Var
  index1,index2,x:Integer;
  Farbe:TColor;
  s:AnsiString;
begin
  x := 1;
  s := Memo1.Lines.Text;
  For index1:=1 to 300 do
  begin
    for index2:=1 to 300 do
    begin
      farbe := GetFarbeFromString(s,x);
      inc(x);
      image2.canvas.pixels[index1,index2]:=farbe;
    end;
  end;
end;

EMS 28. Dez 2012 20:56

AW: Memofeld in Ord Werte übertragen
 
mhh ich verstehe nicht ganz was dein text da macht?
auch das mit dem ord bekomme ich nicht mehr hin was es mit den Klammern auf sich hat?

Bummi 28. Dez 2012 21:24

AW: Memofeld in Ord Werte übertragen
 
Anhand von Beispielen?

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
Var
 i:Integer;
begin
  // Memo ist das Control in dem der Text dargestellt wird
  // Lines "sind die einzelnen Zeilen"
  for I := 0 to Memo1.Lines.Count - 1 do
      ShowMessage(Memo1.Lines[i]);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
   // Memo1.Lines.Text ist der genze Inhalt des Memos
   ShowMessage(Memo1.Lines.Text)
end;

procedure TForm1.Button4Click(Sender: TObject);
Const
 s:String='Nase';
var
 i:Integer;
begin
  for I := 1 to Length(s) do
     Showmessage(s[i]);
end;

EMS 28. Dez 2012 21:31

AW: Memofeld in Ord Werte übertragen
 
Das hab ich verstanden aber was macht das ord?und wie wird das benutzt?kannst du deinen ersten Post kommentieren?

Bummi 28. Dez 2012 21:53

AW: Memofeld in Ord Werte übertragen
 
Ord('A') >> 65, liefert die die Position des Zeichens in der Zeichtabelle zurück, die Umkehrfunktion ist Char(65) >> 'A'

lies mal hier nach: http://www.delphi-treff.de/object-pascal/datentypen/

EMS 28. Dez 2012 21:56

AW: Memofeld in Ord Werte übertragen
 
Ja das weiß ich ja so aber mit mehreren geht das ja nicht hin bzw noch nicht mal ein Wert aus dem Memo in den Zahlen Wert dann

delnu 28. Dez 2012 22:37

AW: Memofeld in Ord Werte übertragen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Die Beispiele sind doch eigentlich gut verständlich. Die Liste des Memo wird einfach Eintrag für Eintrag durchgearbeitet. Dabei entspricht jede Zeile quasi dem, was Du sonst im TEdit hast.

Aber mal zur Zielsetzung : Im Entwickler-Magazin 4 von 2002 gab es mal ein Beispiel zur Steganographie. Ich hatte das irgendwann mal von deren Internetseite runtergeladen. Als ich gerade geguckt habe, wie das heutzutage mit Quelltexten aussieht, habe ich allerdings nichts mehr gefunden.

Ich habe es mal als ZIP-Datei hochgeladen. Das müßten die Originale sein. Auf der Basis läßt sich sicher was machen. Mich hatte das zwar auch eine Weile beschäftigt, aber man müßte an der Programmstruktur einiges machen, um das alles etwas mehr zu automatisieren und Fehler besser abzufangen. Das war mir aber die Mühe nicht wert, denn wozu sollte ich Daten verbergen ?

Ach je ! Nachdem ich mir die Problemstellung gerade nochmal durchsah, habe ich erst bemerkt, daß es um eine Aufgabe mit Vorgaben handelt. Da dürfte Dir das Zeug nicht viel helfen. Ich habe mal kurz in die Quellen gesehen. Das verstehe ich selbst nicht, obwohl ich schon ziemlich lange mit Delphi programmiere - vorher Turbo Pascal ab Version 3 und Assembler.

EMS 30. Dez 2012 14:34

AW: Memofeld in Ord Werte übertragen
 
So hier mal die Zeilen die funktionieren:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
   var
   Ordnungszahl:Integer;
begin
   Ordnungszahl:=ord(edit1.text[1]);
   label2.caption:=inttostr(ordnungszahl);
end;

was hat jetzt hier der Wert [1] hinter dem edit1.text zu sagen?

Volker Z. 30. Dez 2012 14:56

AW: Memofeld in Ord Werte übertragen
 
Mit der Eins in eckigen Klammern greifst Du auf das erste Zeichen des Textes Deiner Edit-Instanz zu.

Allgemein: Mit s[i] kannst Du auf das i-te Zeichen im string s zugreifen {insofern s <> '' und i <= Length (s)}.

Gruß

Getox 2. Jan 2013 13:14

AW: Memofeld in Ord Werte übertragen
 
Die Fragen von EMS erinnern mich irgendwie an mich mit Elektrotechnik, als ich noch in der Ausbildung zum ITA war.

Ich habe in Elektrotechnik 2 Jahre lang garnichts gemacht. Ich mochte das Fach nicht und wollte es im Grunde auch garnicht verstehen. Im 3. Jahr ging es um meinen Abschluss und mir ging der A... auf Grundeis, weil mein Abschluss nun zum Großen Teil von genau diesem Fach abhing (Prüfungsfach).

Also habe ich versucht zu lernen, so dass es irgendwie dann doch auf eine akzeptable Note schaffen konnte. Ich erstellte mir Accounts in diversen Foren und Stellte Fragen, wie man nun Ströme und Spannungen an verschiedenen Stellen von Schaltungen aus diversen Bauteilen (Kondensator, Spule, Widerstand etc.) messen kann. Problem war: Ich kannte URI. Das wars. ich wusste nicht mal was Strom und Spannung ist. Dem entsprechend hatte ich keinen Plan was die Antworten auf meine Fragen bedeuten sollten.

Ich wusste, dass ich die Elektrotechnik von Grund auf neu lernen musste, wenn ich gut in diesem Fach sein will. Aber ich hatte ein Jahr Zeit um den Stoff von 2 Jahren aufzuholen. Da waren aber noch diverse andere Fächer die ich lernen musste und zeit zum Zocken brauchte ich ja auch noch^^

Im Endeffekt hab ich dann hart drauf gesch... Ich habe geschafft in einem 4-Augengespräch mit meinem Lehrer meine Vornote (ursprünglich Mangelhaft) in eine 3 zu diskutieren. So brauchte ich nur noch eine 5 in der Abschlussprüfung schaffen (hab ich grade so mit hängen, würgen, Formelsammlung und raten hinbekommen) so dass ich gesamt auf meine 4 kam.

EMS... kann das sein, dass deine Situation ähnlich ist? In dem Falle würde ich wirklich empfehlen, noch mal bei den Grundlagen zu beginnen und alles Stück für Stück durchzukauen... oder versuchen sich da irgendwie durchzumogeln. Ein Zwischending bringts nicht, weil man so immer wieder Fragen stellt, wo man die Antworten aber garnicht verstehen kann, weil einem die Grundlagen fehlen.

Mavarik 2. Jan 2013 14:49

AW: Memofeld in Ord Werte übertragen
 
Ahh jetzt macht auch das 1. Posting langsam Sinn...

Hier mal eine Anregung:

1. 2 Bilder um den Vergleich zum Original zu machen ist "unschön"
2. Nimm die RGB Werte der Pixel und lösche IMMER das obere Bit... (AND $7F) jetzt hast Du in jedem Pixel 3 Bit Platz.
3. Nimm den Text und schaufel jedes Bit von jedem Zeichen in die oberen Bits

Grüsse Mavarik

Oje, das wirft warscheinlich noch mehr Fragen auf...

EMS 4. Jan 2013 18:19

AW: Memofeld in Ord Werte übertragen
 
so jetzt klappts ungefähr wie ich wollte.
Das mit dem Werte verschieben ist mir nicht in den Sinn gekommen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:42 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