Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Kombination der Groß-Klein Buchstaben (https://www.delphipraxis.net/112370-kombination-der-gross-klein-buchstaben.html)

gizzy 19. Apr 2008 22:47

Re: Kombination der Groß-Klein Buchstaben
 
Die Blackliste ist von einen externen Prgramm! Da kann ich nichts ändern, das ist ja das Problem. Der wird immer Case-Sensitive prüfen, deswegen muss ich mich anpassen. Sonst hätte ich das ja schon längst getan.
Aber das habe ich bereits geschrieben.

DeddyH 19. Apr 2008 22:50

Re: Kombination der Groß-Klein Buchstaben
 
Wer prüft denn nun? Du oder das externe Programm? Erklär den Sachverhalt doch mal so, dass wir auch genau wissen, worum es geht.

grenzgaenger 19. Apr 2008 23:20

Re: Kombination der Groß-Klein Buchstaben
 
Sag mal, weshalb nimmst du nicht das CaseSensitiv heraus? Dann hast dein Problem ohne Aufwand erledigt.

<HTH> GG

DeddyH 19. Apr 2008 23:28

Re: Kombination der Groß-Klein Buchstaben
 
Das geht ja angeblich nicht. Aber solange ich nicht genau weiß, wer wann was machen soll, beschäftige ich mich nicht mehr weiter damit :mrgreen:

gizzy 19. Apr 2008 23:34

Re: Kombination der Groß-Klein Buchstaben
 
Es Existiert ein Online Spiel.
Von diesem Spiel kann man einen Server aufsetzen. Dieser Server lädt eine Blockliste: "swearnames.txt". In dieser Datei ist 'untereinander' eine Liste der Namen, die nicht für eine Anmeldung genommen werden dürfen.
So sieht diese Liste aus:
Zitat:

GM
gm
Gm
gM
GM
Gamemaster
gamemaster
GameMaster
GAMEMASTER
Admin
admin
ADMIN
[...]
Wird ein solcher name gewählt (im Clienten) wird eine Fehlermeldung ausgegeben.
Für jeden Spieler wird eine Datei auf dem Server angelegt: "Spielername.cfg". Unterschiedliche Anmeldenamen sind jedoch auch hier: "Spieler" und "SPIELER". Somit ist sichergestellt das möglichst viele 'Accounts' existieren können.
Dieser Server ist schon compiled und kann nicht mehr geändert werden.
Nur Serverconfigs und die Blockliste können bearbeitet werden.

Mit meinem Programm möchte ich nur die oben genannte Blockliste verwalten.
Der Hacken an der Liste ist, dass diese auf Groß- und KleinSchrift achtet.
So ist von den Beispielen oben nicht Inbegriffen Bsp: "GAMEmaster" oder "AdmiN". Wenn ich jetzt einen neuen Begriff zu dieser Liste hinzufügen möchte, sollen alle Möglichkeiten ausgeschlossen werden diesen Namen zu verwenden. Bei "aaa" wären das, wie im ersten Beitrag schon angedeutet =>

Zitat:

Aaa
aAa
aaA
aAA
AAA
AAa
AaA
aaa
Dies würde bei Namen wie GameMaster recht lange dauern von Hand einzutippen. Und GameMaster ist nicht der einzige Name der geblockt werden soll.

grenzgaenger 19. Apr 2008 23:38

Re: Kombination der Groß-Klein Buchstaben
 
und weshalb verwaltest sie nicht caseinsensitv? lesen --> konvertieren --> neue blockwörter einfügen --> permutieren --> zurückspeichern.

wo liegt das problem? <HTH>

gizzy 19. Apr 2008 23:42

Re: Kombination der Groß-Klein Buchstaben
 
Zitat:

Zitat von grenzgaenger
und weshalb verwaltest sie nicht caseinsensitv? lesen --> konvertieren --> neue blockwörter einfügen --> permutieren --> zurückspeichern.

wo liegt das problem? <HTH>

Naja, beim Permutieren :)

Hawkeye219 19. Apr 2008 23:44

Re: Kombination der Groß-Klein Buchstaben
 
Hi,

unabhängig vom Sinn und Zweck der Übung:

Delphi-Quellcode:
procedure PermuteCase (s: string; L: TStrings);
var
  SL   : TStringList;
  chars : array [Boolean] of string;
  i, j : Integer;
begin
  SL := TStringList.Create;
  SL.Sorted := True;
  SL.Duplicates := dupIgnore;
  SL.CaseSensitive := True;

  chars[False] := AnsiLowerCase(s);
  chars[True] := AnsiUpperCase(s);

  for i := 0 to Pred(1 shl Length(s)) do
    begin
      for j := 1 to Length(s) do
        s[j] := chars[Odd(i shr Pred(j))][j];
      SL.Add(s);
    end;

  L.Assign(SL);
  SL.Free;
end;
Gruß Hawkeye

gizzy 19. Apr 2008 23:51

Re: Kombination der Groß-Klein Buchstaben
 
Zitat:

Zitat von Hawkeye219
Hi,

unabhängig vom Sinn und Zweck der Übung:

Gruß Hawkeye

Delphi-Quellcode:
procedure PermuteCase (s: string; L: TStrings);
var
  SL   : TStringList;
  chars : array [Boolean] of string;
  i, j : Integer;
begin
  SL := TStringList.Create;
  SL.Sorted := True;
  SL.Duplicates := dupIgnore;
  SL.CaseSensitive := True;

  chars[False] := AnsiLowerCase(s);
  chars[True] := AnsiUpperCase(s);

  for i := 0 to Pred(1 shl Length(s)) do
    begin
      for j := 1 to Length(s) do
        s[j] := chars[Odd(i shr Pred(j))][j];
      SL.Add(s);
    end;

  L.Assign(SL);
  SL.Free; //Abstrakter Fehler?!?!
end;
Aufruf:

Delphi-Quellcode:
moeglichkeiten:= TStrings.Create;
PermuteCase(txtname.Text, moeglichkeiten);

DeddyH 20. Apr 2008 00:00

Re: Kombination der Groß-Klein Buchstaben
 
Ich sehe noch ein ganz anderes Problem. Nehmen wir den Usernamen "Administrator" mal als Beispiel. Das ist ein String mit 13 Buchstaben, d.h. es gibt 2^13 mögliche Schreibweisen. Daraus folgt, dass die Blacklist nur dafür alleine 2^13 * (13 + 1) (bei UNIX-Schreibweise mit LF) oder gar 2^13 * (13 + 2) (bei Windows-Schreibweise mit CRLF) Bytes benötigt. Der Speicherbedarf je Username steigt potentiell mit der Stringlänge. Man darf sich fragen, ob da nicht evtl. ein Timeout oder ein OutOfMemory zu erwarten ist.

[edit] @gizzy: mach aus TStrings im Aufruf mal TStringlist. [/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:17 Uhr.
Seite 3 von 4     123 4      

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