Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Doppelte Buchstaben aus String auslesen (https://www.delphipraxis.net/200710-doppelte-buchstaben-aus-string-auslesen.html)

Uwe Raabe 17. Mai 2019 21:40

AW: Doppelte Buchstaben aus String auslesen
 
Zitat:

Zitat von SirMaurice (Beitrag 1432459)
Ich bräuchte tatsächlich nur 26 Buchstaben.

Na dann...
Delphi-Quellcode:
function StripDoubleChars(const Source: string): string;
var
  C: AnsiChar;
  cSet: set of 'A'..'Z';
  I: Integer;
begin
  cSet := [];
  Result := '';
  for I := 1 to Length(Source) do begin
    C := AnsiChar(UpCase(Source[I]));
    if not (C in ['A'..'Z']) then Continue;
    if not (C in cSet) then begin
      Include(cSet, C);
      Result := Result + Source[I];
    end;
  end;
end;

SirMaurice 22. Mai 2019 16:40

AW: Doppelte Buchstaben aus String auslesen
 
Passwort ist unglücklich gewählt.

Ich muss es nicht verschlüsseln, geht mir nur darum aus einem String die doppelt vorkommenden Zeichen zu entfernen.

hoika 22. Mai 2019 16:50

AW: Doppelte Buchstaben aus String auslesen
 
Hallo,
ich würde einfach eine TStringList SL nehmen.

Der String wird durchlaufen, jedes Zeichen wird geprüft, ob es bereits in SL ist (IndexOf),
wenn ja, verwerfen, wenn nein rein in die SL.

SirMaurice 22. Mai 2019 17:48

AW: Doppelte Buchstaben aus String auslesen
 
An sich ne gute Idee, ich darf nur den String nicht sortieren, sonst ist ja mein String nachher ein anderer.

Weiterhin habe ich nicht wirklich eine Ahnung von Properties und wie man diese festlegt.

hoika 22. Mai 2019 18:27

AW: Doppelte Buchstaben aus String auslesen
 
Hallo,
ich habe nichts von Sortierung gesagt.
Und was ist mit Properties?

Pseudo-Code:

Delphi-Quellcode:
S2:= '';
for i=1 to Length(AString) do
begin
  AChar=Copy(AString,i,1);
  if SL.IndexOf(AChar)=-1 then
  begin
    // noch nicht vorhanden
    S2:= S2+AChar;
  end;
  SL.Add(AChar);
end;

SirMaurice 22. Mai 2019 18:31

AW: Doppelte Buchstaben aus String auslesen
 
Zitat:

Code:
function StripDoubleChars(const Source: string): string;
var
  C: AnsiChar;
  cSet: set of 'A'..'Z';
  I: Integer;
begin
  cSet := [];
  Result := '';
  for I := 1 to Length(Source) do begin
    C := AnsiChar(UpCase(Source[I]));
    if not (C in ['A'..'Z']) then Continue;
    if not (C in cSet) then begin
      Include(cSet, C);
      Result := Result + Source[I];
    end;
  end;
end;


Ich schaffs nicht das ganze zu implementieren. Brauche theoretisch das ganze als Prozedur.

Habe zwei Untis, eine für die oberfläche, die andere für die Umwandlung.

Ich weiß nicht so ganz ob mein Aufruf hier richtig ist.

Code:
procedure TCaesar.SetPassword(ps2: string);
 var
  i: integer;
begin
  ps:='';
  ps2:=UpperCase(ps2);
  for i:=1 to length(ps2) do begin
    case ps2[i] of
      'A'..'Z': ps:=ps + ps2[i];
      'Ä': ps:=ps + 'A';
      'Ö': ps:=ps + 'O';
      'Ü': ps:=ps + 'U';
      'ß': ps:=ps + 'S';
    end;
  end;
  [B][U]ps:= stripdoublechars(ps) ;[/U][/B]
end;

Durchläuft er dann den obengenannten Prozess und dann die Function StripDoubleCharacters?

SirMaurice 22. Mai 2019 18:39

AW: Doppelte Buchstaben aus String auslesen
 
Zitat:

function StripDoubleChars(const Source: string): string;
var
C: AnsiChar;
cSet: set of 'A'..'Z';
I: Integer;
begin
cSet := [];
Result := '';
for I := 1 to Length(Source) do begin
C := AnsiChar(UpCase(Source[I]));
if not (C in ['A'..'Z']) then Continue;
if not (C in cSet) then begin
Include(cSet, C);
Result := Result + Source[I];
end;
end;
end;

Brauche das ganze als Prozedur oder jemand müsste mir sagen, ob der Aufruf unten korrekt ist:

Code:
procedure TCaesar.SetPassword(ps2: string);
 var
  i: integer;
begin
  ps:=ps2;
  ps2:=UpperCase(ps2);
  for i:=1 to length(ps2) do begin
    case ps2[i] of
      'A'..'Z': ps:=ps + ps2[i];
      'Ä': ps:=ps + 'A';
      'Ö': ps:=ps + 'O';
      'Ü': ps:=ps + 'U';
      'ß': ps:=ps + 'S';
    end;
  end;
  ps:= stripdoublechars(ps) ;
end;

Klaus01 22. Mai 2019 19:00

AW: Doppelte Buchstaben aus String auslesen
 
.. wenn Du es schon TCaeser nennst.
Bei der Caeser Verschlüsslung gibt es keine Passwort.
Da wird das Alphabet nur um eine gewissen Anzahl an Buchstaben verschoben.

A würde z.B. zu E
B würde z.B. zu F
etc

Der zu verschlüsselnde Text kann sehrwohl doppelte Buchstaben enthalten.
Sie werden dann immer mit dem gleichen Buchstaben ersetzt.

Grüße
Klaus

SirMaurice 23. Mai 2019 06:47

AW: Doppelte Buchstaben aus String auslesen
 
Oben steht doch was ich mit dem Programm vorhabe. Das Programm war ursprünglich auch mal die ganz normale Caeser Verschlüsselung, jedoch habe ich mich dazu entschlossen das Programm weiter zu entwickeln. Wie gesagt, Passwort ist eher schlecht gewählt worden.

Delphi.Narium 23. Mai 2019 07:59

AW: Doppelte Buchstaben aus String auslesen
 
Sowas (in PascalScript hingedaddelt)?
Delphi-Quellcode:
program Script;

function EindeutigeBuchstaben(ABuchstaben : String) : String;
var
        i : Integer;
begin
  Result := '';
  for i := 1 to Length(ABuchstaben) do begin
    if Pos(ABuchstaben[i],Result) = 0 then Result := Result + ABuchstaben[i];
  end;
end;

begin
  ShowMessage(EindeutigeBuchstaben('Erwinistdoof')); // ergibt Erwinstdof
end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:13 Uhr.
Seite 2 von 3     12 3      

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