AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TMemoryStream mit Zufallszahlen füllen

Ein Thema von devidespe · begonnen am 11. Jan 2016 · letzter Beitrag vom 12. Jan 2016
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

AW: TMemoryStream mit Zufallszahlen füllen

  Alt 11. Jan 2016, 18:33
Nur mal so OT am Rande:

Schon mal darüber nachgedacht, dass man mit so einer zufälligen Bytefolge auch zufällig einen Virus produziert, der vom Virenscanner dann gefressen wird?

Oder es ist ein ganz neuer noch unbekannter Virus der dann das ganze Internet lahmlegt?
Oder es wird ein Bild, was den wahren Mörder von JFK zeigt? (Vielleicht sogar irgendein Alien?)
...

Also nicht wundern was dabei herauskommen kann
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#12

AW: TMemoryStream mit Zufallszahlen füllen

  Alt 11. Jan 2016, 18:48
for i:=0 to (Beispielstream.Size-1 DIV 4) do Beispielstream.Write(Random(2147483647), 4);

Punkt vor Strichrechnung beachten!
for i:=0 to ((Beispielstream.Size-1) DIV 4) do Beispielstream.Write(Random(2147483647), 4);


Wie wäre es denn damit?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i : Integer;
    Beispielstream : TMemoryStream;
    DateiGroesseInBytes : Integer;
    dw : DWord;
begin
  DateiGroesseInBytes := 100;
  Beispielstream:=TMemoryStream.Create;
  Beispielstream.SetSize(DateiGroesseInBytes);
  Randomize;
  for i := 0 to (Beispielstream.Size - 1) Div SizeOf(dw) do begin
    dw := Random(MaxInt);
    Beispielstream.Write(dw, SizeOf(dw));
  end;
  Beispielstream.SaveToFile('Datei');
  Beispielstream.Free;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#13

AW: TMemoryStream mit Zufallszahlen füllen

  Alt 11. Jan 2016, 18:56
So gibt es einen Zufallswert, der den gesamten Integer-Bereich abdeckt:
Delphi-Quellcode:
function GetTotalRandomInteger() : Integer;
begin
  Result := 0;
  for i := 1 to 4 do
    Result := ( ( Result shl 8 ) and $FFFFFF00 ) or Random( 256 );
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (11. Jan 2016 um 18:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#14

AW: TMemoryStream mit Zufallszahlen füllen

  Alt 11. Jan 2016, 21:04
Delphi-Quellcode:
var i : Integer;
    Beispielstream : TMemoryStream;
...
begin
  Beispielstream:=TMemoryStream.Create;
  Beispielstream.SetSize(DateiGroesseInBytes);
  Beispielstream.LoadFromFile(Datei);

  Randomize;
  for i:=0 to Beispielstream.Size do Beispielstream.Write(Random(256), 1);

  Beispielstream.SaveToFile(Datei);
  Beispielstream.Free;
end;
hmm

Delphi-Quellcode:
var i : Integer;
    Beispielstream : TMemoryStream;
...
begin
  Beispielstream:=TMemoryStream.Create;
  Beispielstream.SetSize(DateiGroesseInBytes); // Wofür?
  Beispielstream.LoadFromFile(Datei); // Daraus ergibt sich die Größe des Memstreams...


  Randomize;
  for i:=0 to Beispielstream.Size do Beispielstream.Write(Random(256), 1); // Warum erst die Datei laden um die Daten dann zu überschreiben...

  Beispielstream.SaveToFile(Datei);
  Beispielstream.Free;
end;
Wenn Du nur Bytes schreiben willst... Dann schreib auch nur Bytes...
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#15

AW: TMemoryStream mit Zufallszahlen füllen

  Alt 11. Jan 2016, 21:16
Ich schätze er will einen Datei-Shredder bauen....
Du brauchst diese durch-4-Teilerei nicht.

Delphi-Quellcode:
var i : Integer;
    Beispielstream : TMemoryStream;
begin
  Beispielstream:=TMemoryStream.Create;
  try
    Beispielstream.LoadFromFile(Datei);

    //Randomize; Sollte nur einmal im Programm aufgerufen werden!
    for i:=0 to Beispielstream.Size-1 do
      PByte(NativeUInt(Beispielstream.Memory)+i)^ := random(256);

    Beispielstream.SaveToFile(Datei);
  finally
    Beispielstream.Free;
  end;
end;
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#16

AW: TMemoryStream mit Zufallszahlen füllen

  Alt 11. Jan 2016, 21:24
Na dann eher so...

Delphi-Quellcode:
var i : byte;
    Beispielstream : TMemoryStream;
begin
  Beispielstream:=TMemoryStream.Create;
  try
    Beispielstream.LoadFromFile(Datei);

    //Randomize; Sollte nur einmal im Programm aufgerufen werden!

    for i:=0 to 255 do
      begin
        Fillchar(Beispielstream.Memory^,I,Beispielstream.Size);
        Beispielstream.SaveToFile(Datei);
      end;
        
  finally
    Beispielstream.Free;
  end;
end;
  Mit Zitat antworten Zitat
bepe

Registriert seit: 17. Okt 2006
118 Beiträge
 
#17

AW: TMemoryStream mit Zufallszahlen füllen

  Alt 11. Jan 2016, 21:53
Also wenn schon, dann so:
Delphi-Quellcode:
    for i:=0 to 255 do
      begin
        Fillchar(Beispielstream.Memory^,Beispielstream.Size, I);
        Beispielstream.SaveToFile(Datei);
      end;
Wobei ich mir nicht sicher bin ob das nicht, dank Win Cache, zu dem Ergebnis von dem führt:

Delphi-Quellcode:
        i:=255;
        Fillchar(Beispielstream.Memory^,Beispielstream.Size, I);
        Beispielstream.SaveToFile(Datei);

mfg,
bp
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#18

AW: TMemoryStream mit Zufallszahlen füllen

  Alt 11. Jan 2016, 22:04
Also wenn schon, dann so:
Delphi-Quellcode:
    for i:=0 to 255 do
      begin
        Fillchar(Beispielstream.Memory^,Beispielstream.Size, I);
        Beispielstream.SaveToFile(Datei);
      end;
Klar, wollte sehen, ob jemand den Fehler findet...

Wobei ich mir nicht sicher bin ob das nicht, dank Win Cache, zu dem Ergebnis von dem führt:...
Tja gute Frage... Vielleicht hat man auch auf der Festplatte dann 255 gelöschte Dateien mit 0-254'er Inhalt und eine mit 255er...

Lange nicht mehr mit beschäftigt...
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#19

AW: TMemoryStream mit Zufallszahlen füllen

  Alt 11. Jan 2016, 22:41
Wenn man eine SSD sein eigen nennt, dann wird das kein Datei-Shredder, sondern ein SSD-Ager (wie lasse ich meine SSD besonders schnell altern)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#20

AW: TMemoryStream mit Zufallszahlen füllen

  Alt 12. Jan 2016, 08:01
Okay also dann muss ich ja durch 4 teilen bei der For-Schleife, und Ramdom entsprechend nach oben anpassen (ich glaube Integer ist vordefiniert mit einem Maximalwert von 2147483647:

for i:=0 to (Beispielstream.Size-1 DIV 4) do Beispielstream.Write(Random(2147483647), 4);
Nicht unbedingt

Da 4 Bytes = 1 DWORD, ist es egal, ob Du nun 4 zufällige Bytes oder 1 zufalliges DWORD erzeugst..

Nur bei dem vorhandenen RANDOM von Delphi, ist sogar die Lösung per 4x Byte zufälliger, wie einmal DWORD..
Ist halt kein 'richtiger' Zufallsgenerator, da Coputer sich damit schwer tun..
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 13:39 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