AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi simple Konvertierung von Stringcode in andere Zeichen
Thema durchsuchen
Ansicht
Themen-Optionen

simple Konvertierung von Stringcode in andere Zeichen

Ein Thema von cRayZo · begonnen am 27. Aug 2007 · letzter Beitrag vom 28. Aug 2007
Antwort Antwort
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#1

simple Konvertierung von Stringcode in andere Zeichen

  Alt 27. Aug 2007, 22:14
Hi ich möchte einen stringcode, der hauptsächlich aus Zahlen besteht in andere Zahlen umwandeln, und wieder zurück.

Der Code besteht aus folgenden Zeichen:
1234567890|;:

für jedes Zeichen soll es zwei Konvertierungsmöglichkeiten geben, also kann 1=§ aber auch 1=% sein (bsp.)

bei der encodierung wird dann geprüft, und der code wiederhergestellt.

ich hätte es jetzt mit einer extrem langen if then else- Kette gemacht
aber das geht doch auch bestimmt anders oder?

mfg cRayZo
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: simple Konvertierung von Stringcode in andere Zeichen

  Alt 27. Aug 2007, 22:20
Nach welchen Kriterien soll 1 zu % oder § werden?
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: simple Konvertierung von Stringcode in andere Zeichen

  Alt 27. Aug 2007, 22:34
Eventuell hilft Die die Case-Anweisung weiter. Als Ordinal-Typ kannst Du z.B. ORD(Zeichenkette[i]) in einer Schleife verwenden, die den String Zeichen für Zeichen durchgeht. Hier ein Pseudo-Code aus einer Website kopiert...

Delphi-Quellcode:
case <bariable> of { die Variable muß ein Ordinaltyp sein }
wert1:
   ... Anweisung
wert2...wert5:
   anweisung
wert6, wert9:
begin
   ... Anweisung
end;
else
... alles, was nicht oben drin vorkommt
end; { Ende der Case-Anweisung }
SCRaT
Michael Kübler
  Mit Zitat antworten Zitat
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#4

Re: simple Konvertierung von Stringcode in andere Zeichen

  Alt 28. Aug 2007, 14:04
Zitat von quendolineDD:
Nach welchen Kriterien soll 1 zu % oder § werden?
nach der warscheinlichkeit 1 zu 1

also random(2)
bei 0 dann x
bei 1 dann y

das ist ja auch nicht mein Problem^^

vom Grund her wüsste ich ja auch wies funktioniert, aber eine nachträgliche Änderung der verschiedenen Zahlen wäre dann zu kompliziert wenn ich z.B. eine if then else kette mache.
Wenn ich für jeden Buchstabe eine stringvariable erstelle und dann mit einer Warscheinlichkeit 1 zu length(string) einen Buchstaben daraus auswähle der dann verwendet wird. Wie kann ich das im Code umsetzen?(das dick-gedruckte) mir fehlen die Befehle.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: simple Konvertierung von Stringcode in andere Zeichen

  Alt 28. Aug 2007, 14:22
Delphi-Quellcode:
function CharPos(const S: string; const C: Char): Integer;
begin
  for Result := 1 to Length(S) do
    if S[Result] = C then
      Exit;
  Result := 0;
end;

function TransformString(const input, source, dest:string):string;
var
   i, p : Integer;

begin
   SetLength(Result, length(input));
   for i := 1 to length(input) do
   begin
      p := CharPos(source, input[i]);
      if p = 0 then
         raise Exception.Create('invalid char');
      Result[i] := dest[p];
   end;
end;
Aufruf:
Delphi-Quellcode:
const
   source = '1234567890|;:'; // Zeichen für Ausgangsdaten
   dest = 'ABCDEFGHIJKLM'; // Zeichen für transformierten String
begin
   Caption := TransformString('56456|444:', source, dest);
Zum Rückverwandeln muss einfach source und dest vertauscht werden.
Andreas
  Mit Zitat antworten Zitat
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#6

Re: simple Konvertierung von Stringcode in andere Zeichen

  Alt 28. Aug 2007, 16:21
okay der code klappt. Ich hab aber nochmal ne frage dazu.

wie kann man den Fortschritt dieser funktion abfragen?
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

Re: simple Konvertierung von Stringcode in andere Zeichen

  Alt 28. Aug 2007, 17:00
Zitat von cRayZo:
wie kann man den Fortschritt dieser funktion abfragen?
Man könnte, aber die Umwandlung der Zeichen geht so schnell, dass ein Progressbar gar nicht nachkommen würde.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#8

Re: simple Konvertierung von Stringcode in andere Zeichen

  Alt 28. Aug 2007, 17:04
du könntest der funktion eine Callback-routine übergeben und diese in der schleife aufrufen.

so in etwa (ungetestet):

Delphi-Quellcode:
Type TCallback=procedure(percent:byte) {of object};

pocedure {TForm1.}CallbackProc(percent:byte);
begin
  //progressbar etc. ändern
end;

function TransformString(const input, source, dest:string;cb:TCallback):string;
...
  for ...
  begin
    ..
    cb(Round(100*i/length(input)));
  end;

Caption := TransformString('56456|444:', source, dest,CallbackProc);
oder du greifst in der schleife gleich auf die entsprechenden Instanzen zur anzeige zu (nicht zu empfehlen).
ggf. muss application.processmessage o.ä. verwendet werden.

HTH Frank
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: simple Konvertierung von Stringcode in andere Zeichen

  Alt 28. Aug 2007, 18:39
Zitat von cRayZo:
okay der code klappt. Ich hab aber nochmal ne frage dazu.

wie kann man den Fortschritt dieser funktion abfragen?
Mit einer ProgressBar. Aber wie schon geschrieben wird es wohl zu schnell für eine sinnvolle Anzeige sein...

ProgressBar1.Max := Length(DeinString); In der Schleife nach jedem Durchlauf einfach

ProgressBar1.Value := ProgressBar1.Value + 1; Müsste passen...

SCRaT
Michael Kübler
  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 08:04 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