Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi alle Kombinationen 00000000..ZZZZZZZZ in textfile? (https://www.delphipraxis.net/11205-alle-kombinationen-00000000-zzzzzzzz-textfile.html)

Pseudemys Nelsoni 1. Nov 2003 22:59


alle Kombinationen 00000000..ZZZZZZZZ in textfile?
 
hoi

kann mir jemand nen tip geben wie ich alle 8stelligen kombinationen von 0 bis Z in eine textdatei bekomme? da es 100emillionen von kombinationen sind kann ich sie nicht mit handschreiben :|

himitsu 1. Nov 2003 23:15

Re: alle Kombinationen 00000000..ZZZZZZZZ in textfile?
 
Delphi-Quellcode:
Const Z: Array[0..11] of Char = ('0', '1', '2',    '7', '8', '9',
  'A', 'B', 'C',    'X', 'Y', 'Z');

Var s1, s2, s3, s4, s5, s6, s7, s8: Byte;
  D: TextFile;

Begin
  AssignFile(D, 'Datei.txt');
  Rewrite(D);
  For s1 := 0 to High(Z) do For s2 := 0 to High(Z) do
    For s3 := 0 to High(Z) do For s4 := 0 to High(Z) do
      For s5 := 0 to High(Z) do For s6 := 0 to High(Z) do
        For s7 := 0 to High(Z) do For s8 := 0 to High(Z) do
          WriteLn(D, Z[s1] + Z[s2] + Z[s3] + Z[s4] + Z[s5] + Z[s6] + Z[s7] + Z[s8]);
  CloseFile(D);
End;
Brauchst nur noch das Const-Array (Z) so erweitern, das alle Zeichen vorhanden sind die du benötigst.

axelf98 1. Nov 2003 23:21

Re: alle Kombinationen 00000000..ZZZZZZZZ in textfile?
 
Heftig... Ich hab das mal gemacht und bei der einfachen Version irgendwann mal beendent als die Datei 709 MB groß war!
:shock: :shock: :shock:
Wie sieht das erst bei allen Kombinationen aus?

Ich glaube kaum, dass man diese Datei jemals wieder mit einem editor öffnen kann!

Christian Seehase 1. Nov 2003 23:38

Re: alle Kombinationen 00000000..ZZZZZZZZ in textfile?
 
Moin Silent,

ich nehme mal an, dass Du alle Zeichen von 0 bis 9 gefolgt von A bis Z als Zeichen haben willst.
Dann wäre die Textdatei, wenn jede 8 Zeichen lange Kombination als einzelne Zeile gespeichert werden soll (also +#13#10 je Zeile) genau
28.211.099.074.560 Byte > 25 Terabyte. (26273 GB)
Ich vermute mal, dass Du "leichte" Probleme mit der Plattenkapazität bekommst ;-)

So könntest Du es machen:

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

var
  sLine   : string;
  iDigit  : integer;

begin
  fCancel := false;
  sLine  := '00000000'; // Stellenzahl beachten
  Memo1.Lines.Clear;
  while sLine <> 'ZZZZZZZZ' do begin  // Stellenzahl beachten
    if fCancel then exit;
    Memo1.Lines.Add(sLine);
    Application.ProcessMessages;
    iDigit    := 8;  // Stellenzahl beachten
    while iDigit > 0 do begin
      if sLine[iDigit] = '9' then begin
        sLine[iDigit] := 'A';
        break;
      end;
      if sLine[iDigit] = 'Z' then begin
        sLine[iDigit] := '0';
        dec(iDigit);
        if iDigit = 0 then exit;
        continue;
      end;
      if sLine[iDigit] <> 'Z' then begin
        sLine[iDigit] := chr(ord(sLine[iDigit])+1);
        break;
      end;
    end;
    Memo1.Lines.Add(sLine);
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  fCancel := true;
end;
Ich hab' einen Abbruchbutton vorgesehen.
Ausserdem hab' ich mal die Zeilen markiert, die für die Anzahl der Stellen wichtig wären.

himitsu 1. Nov 2003 23:49

Re: alle Kombinationen 00000000..ZZZZZZZZ in textfile?
 
Hi Christian,
warst ein bissel schneller, hast es aber auf den Punkt gebracht.

In ein Memo1 passt noch weniger rein, da ist doch schon bei 2 GB Schluß. :zwinker:


@axelf98,
keine Geduld? (709 MB)
Die ~4 GB hätteste doch wenigstens durchlaufen lassen können.

Brüggendiek 1. Nov 2003 23:50

Re: alle Kombinationen 00000000..ZZZZZZZZ in textfile?
 
Hallo Silent!

Hiermit möchte ich meinen allerherzlichsten Glückwunsch zum 7-Millionen-Euro-Lottogewinn ausdrücken :mrgreen: :firejump:
:wiejetzt:

Wenn Du nämlich alle Kombinationen aus 0..9 und A..Z (nur Großbuchstaben) schreiben willst, sind das 36 Möglichkeiten pro Stelle, bei 8 Stellen also 36 hoch 8 Zeilen, ca. 2,8 mal 10 hoch 12.
Jede Zeile belegt 10 Zeichen (8 Stellen + CR + LF als Zeilentrenner). Damit errechne ich einen Speicherbedarf von ca. 26 TerraByte - mit 7 Millionen im Rücken kannst Du Dir eine solche Platte locker leisten und auch den für eine halbwegs passable Ausführungsgeschwindigkeit nötigen Prozzi mit mindestens 300 GigaHertz Taktfrequenz :mrgreen: :mrgreen: :mrgreen:

Ach ja, nochwas:
Mit welchem Programm willst Du das Monster denn weiterverarbeiten? :gruebel: :?:

Ganz nebenbei werde ich Strafantrag stellen - schwere Körperverletzung durch vorsätzliches Herbeiführen eines Lachkrampfes. Schmerzensgeld und Ersatz für die beim Auf-dem-Boden-Wälzen zu Bruch gegangene Wohnungseinrichtung fordere ich selbstverständlich auch! :wall: :mrgreen:

Gruß

Dietmar Brüggendiek

Pseudemys Nelsoni 1. Nov 2003 23:58

Re: alle Kombinationen 00000000..ZZZZZZZZ in textfile?
 
hoi @all

danke für die codes, ...und die infos ^^...hmm 25 terrabyte für ein paar millionen zeilen? das ist aber viel

Christian Seehase 2. Nov 2003 00:01

Re: alle Kombinationen 00000000..ZZZZZZZZ in textfile?
 
Moin Silent,

Zitat:

Zitat von silent
für ein paar millionen zeilen?

Über 2800 Milliarden Zeilen. ;-)

Pseudemys Nelsoni 2. Nov 2003 00:11

Re: alle Kombinationen 00000000..ZZZZZZZZ in textfile?
 
omg :mrgreen:

hm, wie funzen denn brute forcer z.b(hab nicht vor einen zu machen(würd ich auch nicht können :roll:)) ? haben die nur paar tausend wörter, oder wie geht das da ab?

Christian Seehase 2. Nov 2003 00:20

Re: alle Kombinationen 00000000..ZZZZZZZZ in textfile?
 
Moin Silent,

die erzeugen dafür keine Datei, sondern probieren direkt durch.
Da bist Du dann von der Anzahl her auch nicht eingeschränkt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:14 Uhr.
Seite 1 von 2  1 2      

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