Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   probleme mit der ausgabe von strings (https://www.delphipraxis.net/43925-probleme-mit-der-ausgabe-von-strings.html)

alien 10. Apr 2005 17:56


probleme mit der ausgabe von strings
 
Liste der Anhänge anzeigen (Anzahl: 1)
:| :| hallo ich habe ein Problem bitte helft mir !!!

Ich bin noch nicht so viel Erfahrung mit Delphi aber ein bisschen mit turbo-Pascal.
Ich will ein Programm erstellen womit man texte verschlüsseln lassen kann.

Zu meinem Problem: wenn ich die ersetzten Buchstaben ausgeben lassen will in ein TRichEdit schreibt er jeden ersetzten Buchstaben in eine neue Zeile ich will sie aber hintereinander haben, hat da jemand einen tipp für mich???

Der text heißt „code“, und die Verschlüsselung „decode“

:coder2: :coder2:

MORSE-ALPHABET


Delphi-Quellcode:
procedure TMorse.Button1Click(Sender: TObject);

begin

s:= code.Text;
x:=length(s);

decode.lines.clear;
for n:=1 to x do begin


s1:=copy(s,n,1);
 if s1=' ' then break;
 if s1='a' then decode.Lines.add('.- ');if s1='b' then decode.lines.Add('-... ');
 if s1='c' then decode.lines.Add('-.-. ');if s1='d' then decode.lines.Add('-.. ');
 if s1='e' then decode.lines.Add('. ');if s1='f' then decode.lines.Add('..-. ');
 if s1='g' then decode.lines.Add('--.');if s1='h' then decode.lines.Add('.... ');
 if s1='i' then decode.lines.Add('.. ');if s1='j' then decode.lines.Add('.--- ');
 if s1='k' then decode.lines.Add('-.- ');if s1='l' then decode.lines.Add('.-.. ');
 if s1='m' then decode.lines.Add('-- ');if s1='n' then decode.lines.Add('-. ');
 if s1='o' then decode.lines.Add('--- ');if s1='p' then decode.lines.Add('.--. ');
 if s1='q' then decode.lines.Add('--.- ');if s1='r' then decode.lines.Add('.-. ');
 if s1='s' then decode.lines.Add('... ');if s1='t' then decode.lines.Add('- ');
 if s1='u' then decode.lines.Add('..- ');if s1='v' then decode.lines.Add('...- ');
 if s1='w' then decode.lines.Add('.-- ');if s1='x' then decode.lines.Add('-..- ');
 if s1='y' then decode.lines.Add('-.-- ');if s1='z' then decode.lines.Add('--.. ');
 if s1=' ' then decode.lines.Add(', ');if s1='.' then decode.lines.Add('.-.-.- ');
 if s1=',' then decode.lines.Add('--..-- ');if s1=':' then decode.lines.Add('---... ');
 if s1='´' then decode.lines.Add('.----. ');if s1='?' then decode.lines.Add('..--.. ');
 if s1='!' then decode.lines.Add('! ');if s1='1' then decode.lines.Add('.---- ');
 if s1='2' then decode.lines.Add('..--- ');if s1='3' then decode.lines.Add('...-- ');
 if s1='4' then decode.lines.Add('....- ');if s1='5' then decode.lines.Add('..... ');
 if s1='6' then decode.lines.Add('-.... ');if s1='7' then decode.lines.Add('--... ');
 if s1='8' then decode.lines.Add('---.. ');if s1='9' then decode.lines.Add('----. ');
 if s1='0' then decode.lines.Add('----- ');if s1=';' then decode.lines.Add('; ');
 if s1='-' then decode.lines.Add('-....- ');if s1='/' then decode.lines.Add('-..-. ');
 if s1='(' then decode.lines.Add('-.--.- ');if s1=')' then decode.lines.Add('-.--.- ');
 if s1='"' then decode.lines.Add('.-..-. ');if s1='=' then decode.lines.Add('-...- ');
 if s1='ä' then decode.lines.Add('.-.- ');if s1='ö' then decode.lines.Add('---. ');
 if s1='ü' then decode.lines.Add('..-- ');


end;


end;
[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]

Dax 10. Apr 2005 18:00

Re: probleme mit der ausgabe von strings
 
1: Falsche Sparte
2: [ delphi]-Tags benutzen
3: Add fügt immer eine neue Zeile an, nimm besser
Delphi-Quellcode:
RichEdit1.Text := RichEdit1.Text + string;

Binärbaum 10. Apr 2005 18:20

Re: probleme mit der ausgabe von strings
 
Statt der vielen if-Anweisungen kann man auch case nehmen.

Delphi-Quellcode:

procedure TMorse.Button1Click(Sender: TObject);
var s1: char;
begin

s:= code.Text;
x:=length(s);

decode.lines.clear;
for n:=1 to x do begin

s1:=s[n];

case s1 of
  ' ': break;
  'a': decode.Lines.add('.- ');
  ...
end;
end;


end;
MfG
Binärbaum

Pr0g 10. Apr 2005 18:49

Re: probleme mit der ausgabe von strings
 
Ich würde es mit zwei Stringlisten machen:
Delphi-Quellcode:
type
  TMorse = class(TForm)
    code: TMemo;
    decode: TMemo;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    SearchList,
    ReplaceList: TStrings;
    procedure AddMorse(const ASearch, AReplace: String);
  public
    { Public-Deklarationen }
  end;

var
  Morse: TMorse;

implementation

{$R *.dfm}

procedure TMorse.AddMorse(const ASearch, AReplace: String);
begin
  SearchList.Add(ASearch);
  ReplaceList.Add(AReplace);
end;

procedure TMorse.FormCreate(Sender: TObject);
begin
  SearchList := TStringList.Create;
  ReplaceList := TStringList.Create;

  AddMorse('a', '.- ');
  AddMorse('b', '-... ');
  AddMorse('c', '-.-. ');
  //...
end;

procedure TMorse.FormDestroy(Sender: TObject);
begin
  SearchList.Free;
  ReplaceList.Free;
end;

procedure TMorse.Button1Click(Sender: TObject);
var
  fLine,
  fDecode: String;
  x, y,
  fIndex: Integer;
begin
  fDecode := '';
  for y := 0 to code.Lines.Count - 1 do
  begin
    fLine := code.Lines[y];
    for x := 1 to Length(fLine) do
    begin
       fIndex := SearchList.IndexOf(fLine[x]);
       if fIndex = -1 then
         fDecode := fDecode + fLine[x]
       else
         fDecode := fDecode + ReplaceList[fIndex];
    end;
  end;
  decode.Text := fDecode;
end;
MfG Pr0g

DP-Maintenance 10. Apr 2005 19:24

DP-Maintenance
 
Dieses Thema wurde von "Christian Seehase" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Sonstige Fragen zu Delphi" verschoben.
Falsche Sparte

Christian Seehase 10. Apr 2005 19:31

Re: probleme mit der ausgabe von strings
 
Moin Alien,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

@Dax:

Zitat:

Zitat von Dax
3: Add fügt immer eine neue Zeile an, nimm besser

Delphi-Quellcode:
  RichEdit1.Text := RichEdit1.Text + string;

lieber nicht. ;-)
Das ist eine der grössten Performancebremsen, die man einbauen kann.
Besser die Eigenschaft Text in eine Stringvariable übertragen, mit dieser arbeiten, und dann wieder nach Text zurückschreiben.
Text wird bei jedem Lesezugriff aus den Zeilen aufgebaut.

Ultimator 11. Apr 2005 12:07

Re: probleme mit der ausgabe von strings
 
Zitat:

Zitat von Binärbaum
Statt der vielen if-Anweisungen kann man auch case nehmen.

Delphi-Quellcode:

procedure TMorse.Button1Click(Sender: TObject);
var s1: char;
begin

s:= code.Text;
x:=length(s);

decode.lines.clear;
for n:=1 to x do begin

s1:=s[n];

case s1 of
  ' ': break;
  'a': decode.Lines.add('.- ');
  ...
end;
end;


end;
MfG
Binärbaum

Ähm, hast du schonmal versucht, in einem Delphi-Programm eine case-Verzweigung mit Strings zu machen?
Geht nämlich ;)

//edit Hab das "nicht" mal entfernt :wall:

sakura 11. Apr 2005 12:08

Re: probleme mit der ausgabe von strings
 
Zitat:

Zitat von Ultimator
Ähm, hast du schonmal versucht, in einem Delphi-Programm eine case-Verzweigung mit Strings zu machen?
Geht nämlich nicht ;)

Macht er ja auch nicht, er nutzt ja ein Char ;-) Und das geht :zwinker:

...:cat:...

Ultimator 11. Apr 2005 12:11

Re: probleme mit der ausgabe von strings
 
Verdammt :mrgreen:

Binärbaum 11. Apr 2005 16:34

Re: probleme mit der ausgabe von strings
 
Zitat:

Zitat von Ultimator
Ähm, hast du schonmal versucht, in einem Delphi-Programm eine case-Verzweigung mit Strings zu machen?

Nun, mit Char geht es ja, aber mit Strings auch, wenn man etwas trickst :twisted:
Kannst ja mal hier in der DP nach Hier im Forum suchenStrIdx suchen.

MfG
Binärbaum


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