Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi welche tabelle oder zeichsatz ist der richtige?? (https://www.delphipraxis.net/43568-welche-tabelle-oder-zeichsatz-ist-der-richtige.html)

Harry M. 5. Apr 2005 23:28


welche tabelle oder zeichsatz ist der richtige??
 
ich schreibe grade an einer verschlüsselung-routine. die arbeitet so: der text in einem memo wird zeichen für zeichen gelesen und ausgewertet... in etwa so

Delphi-Quellcode:
  case OrginalTextMemo.Text[I] of
//...
    #58 : ZEICHEN := '23z'; // :   Doppelpunkt
    #59 : ZEICHEN := 'uuj'; // ;   Semikolon
    #60 : ZEICHEN := '1xq'; // <   Kleiner-als-Zeichen
//...
  end;

  CodetextMemo.Text := CodetextMemo.Text+ZEICHEN;
jetzt bin ich aber auf ü, ö, ä und ß gestoßen... und habe festgestellt, das diese zeichen in der tabelle die ich habe (von irgend so ner uni) gar nicht enthalten sind. kurzerhand habe ich mir nen kleines tool gebastelt, welches bei eingabe in eine edit mir den tastaturcode (KEY) verrät. bei der eingabe von "ü" bekomme ich das gleiche ergebnis wie bei "Ü" nähmlich 186 das gleiche ist auch so mit "Ä" bzw "ä" das ist 222, "Ö" bzw "ö" ist 192 beim zeichen "ß" bekomme ich das gleiche ergebnis wie bei der eingabe von "?" nämlich 219 laut ascii-tabelle die mir vorliegt sollte das "?" eigendlich 63 sein. wie kommen diese unterschiede zustande und wo bekomme ich die richtige tabelle zum codieren her...

sonst wird es schwierig mit der decodierung

Christian Seehase 5. Apr 2005 23:46

Re: welche tabelle oder zeichsatz ist der richtige??
 
Moin Harry,

aus Gründen der Performance solltest Du auf jeden Fall davon Abstand nehmen ständig auf die Eigenschaft Text zuzugreifen.
Übertrage die einmal in eine Stringvariable, und arbeite damit.

Für Case kannst Du auch direkt die Zeichen angeben, also z.B.

Delphi-Quellcode:
case .... of
  'A' : ...
  'ß' : ...
Die Unterschiede dürften daher kommen, dass Tastencode <> Zeichencode

aus ü wird erst in Kombination mit SHIFT ein Ü

Die Zeichentabelle von Windows dürfte Dir auch weiterhelfen.

Binärbaum 5. Apr 2005 23:54

Re: welche tabelle oder zeichsatz ist der richtige??
 
Wenn du die Keycodes abfragst, dann haben sowohl 'a' als auch 'A' den gleichen Wert, unabhängig davon, ob dabei Shift gedrückt wurde oder nicht. Das liegt daran, dass es die gleiche Taste ist.
Bei Keycodes wird also IMHO immer der Code für den Großbuchstaben verwendet, 'A' müsste dann 65 sein.

MfG
Binärbaum

Harry M. 5. Apr 2005 23:59

Re: welche tabelle oder zeichsatz ist der richtige??
 
also eine lösung wie ich ganz zu anfang hatte... jetzt muß ich ja wieder alles umschreiben 127 zeichen mal 2 funktionen = 254 !!! kotz !!! trozdem danke für die hilfe

Harry M. 6. Apr 2005 00:00

Re: welche tabelle oder zeichsatz ist der richtige??
 
@Binärbaum: ist mir auch aufgefallen....

hier mal noch ne brauchbache tabelle: http://www.manderby.com/informatik/a...ltesascii.html

Binärbaum 6. Apr 2005 00:06

Re: welche tabelle oder zeichsatz ist der richtige??
 
Zitat:

Zitat von Harry M.
also eine lösung wie ich ganz zu anfang hatte... jetzt muß ich ja wieder alles umschreiben 127 zeichen mal 2 funktionen = 254 !!! kotz !!! trozdem danke für die hilfe

Naja, man könnte das noch etwas anders machen: man speichert in einem Array die Verschlüsselung für jedes Zeichen und greift dann beim Ver-/ Entschlüsseln auf den Array zu.

Delphi-Quellcode:
const
  codetable: array [0..255] of string[3]
    = ( 'abc', 'qwe', 'wel', 'was', ..... );

...
{Statt
case OrginalTextMemo.Text[I] of
//...
    #58 : ZEICHEN := '23z'; // :   Doppelpunkt
    #59 : ZEICHEN := 'uuj'; // ;   Semikolon
    #60 : ZEICHEN := '1xq'; // <   Kleiner-als-Zeichen
//...
  end;
Schreibt man: }
  ZEICHEN:= codetable[Ord(OrginalTextMemo.Text[I])];
Vorteil ist, dass man die Tabelle auch beim Dekodieren verwenden kann.

MfG
Binärbaum

Harry M. 6. Apr 2005 00:17

Re: welche tabelle oder zeichsatz ist der richtige??
 
schönes beispiel leider habe ich das mit den arrays immer noch nicht so wirklich verstanden das ist für mich wie ne andere dimension(!) ich habe dazu auch scho das tut von christian stelzmann gelesen welches man als pdf in einem von den delphi-forums bekommt. habe aber leider nicht so wirklich verstanden wie es funktioniert... ich bleibe aber am ball.

Binärbaum 6. Apr 2005 00:27

Re: welche tabelle oder zeichsatz ist der richtige??
 
[OT]
Tja, nur um es kurz anzuschneiden:
Arrays kann man sich als Listen vorstellen. Statt mehrere Variablen vom selben Typ (im obigen Beispiel string[3]) zu deklarieren, nimmt man einfach einen Array, darin können mehrere Varaiblen vom selben Typ gespeichet werden. Jedes Element des Arrays hat eine Nummer (meist beginnt die Zählung bei 0 oder 1). BeimZugriff auf Arrays gibt man dann in eckigen Klammern die Nummer des Elements an, das man haben will. Also MeinArray[5] greift auf das Element mit der Nummer 5 zu.
Dann gibt es auch noch zweidimensionale Arrays, die man scih analog zu den Listen als Tabellen vorstellen kann.

(Das jetzt alles ausführlich zu erklären, würde zu weit gehen.)
[/OT]

Harry M. 6. Apr 2005 00:35

Re: welche tabelle oder zeichsatz ist der richtige??
 
Zitat:

Zitat von Binärbaum
(Das jetzt alles ausführlich zu erklären, würde zu weit gehen.)

dafür gibt es ja auch bücher und tuts...

nochmal kurz zu der lösung von christian seehase. wie schon erwähnt diese lösung hatte ich schon zu anfang bin davon aber wieder ab, weil da zuviele unvorhergesehene zeichen auftreten können. also muß ich zwangsläufig über den zeichecode 0 - 255 gehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:17 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 by Thomas Breitkreuz