AGB  ·  Datenschutz  ·  Impressum  







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

Leerzeichen in Unterstriche umwandeln

Ein Thema von Snow Dragon · begonnen am 5. Feb 2009 · letzter Beitrag vom 11. Feb 2009
Antwort Antwort
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#1

Re: Leerzeichen in Unterstriche umwandeln

  Alt 5. Feb 2009, 16:06
lass mal besser die Umwandlung von ß und Umlauten sein, die ist irreversibel und damit nicht mehr entschlüsselbar.
Im Gegensatz zur Umwandlung zu Caesars Zeiten geht es doch darum, alle Zeichen eines Strings um den gleichen Versatz zu verschieben, oder?
Würde ich jedenfalls mal empfehlen, denn dann fängst du auch Kandidaten mit Akzenten etc. ein ...
Und dann reicht es völlig, die Position im zugrundeliegenden Zeichensatz zu ermitteln, den Versatz zu addieren und danach wieder in ein Zeichen zu verwandeln, allerdings modulo 256, weil sonst ein Überlauf entstehen könnte, bei dem ich nicht weiß, was Delphi draus macht.

Also z.B. so:
Delphi-Quellcode:

const versatz = 7;

function codieren(s: string): string;
var i: integer;
    c: char; // ein Zeichen
    p: integer;
    x: string; // das Zwischenergebnis
begin
  x:='';
  for i:=1 to Length(s) do
  begin
    c:=s[i];
    p:=ord(c);
    p:=(p+versatz) mod 256;
    c:=chr(p);
    x:=x+c;
  end;
  Result:=x;
end;

function decodieren(s: string): string;
var i: integer;
    c: char; // ein Zeichen
    p: integer;
    x: string; // das Zwischenergebnis
begin
  x:='';
  for i:=1 to Length(s) do
  begin
    c:=s[i];
    p:=ord(c);
    p:=(p-versatz) mod 256; // Minus statt Plus!
    c:=chr(p);
    x:=x+c;
  end;
  Result:=x;
end;
Man kann das natürlich auch zusammenfassen in z.B.
  x:=x+chr((ord(s[i])+/-versatz) mod 256); das macht's aber eigentlich nur unlesbar und bringt kaum Vorteile.


Wichtig:
der resultierende String enthält in der Regel auch unlesbare bzw. nicht druckbare Zeichen, was aber normalerweise nichts machen dürfte, weil man es ja nicht lesen soll.
Das gibt nur Probleme, wenn man es auch in einer Datei abspeichern will.
Da gibt es zwei Möglichkeiten:
1) Speichern in binärer Datei, dann machen die Steuerzeichen nichts
2) Speichern in Textdatei, dann muss man die Routine abwandeln derart, dass nur die lesbaren Zeichen umgewandelt werden, also von #32 bis #255
Hierzu muss zunächst einmal eine Abbildung von #32..#255 auf #0..223 erfolgen, danach der gleiche Algorithmus, aber mit modulo 224, und danach wieder eine Abbildung von #0..#223 auf #32..#255 ... das war's!
  Mit Zitat antworten Zitat
Antwort Antwort


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:41 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