AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TMemoryStream mit Zufallszahlen füllen

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

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#1

TMemoryStream mit Zufallszahlen füllen

  Alt 11. Jan 2016, 16:11
Hallo,

ich habe einen TMemoryStream, den ich von einer bestimmten Stelle einlese und mit Zufallszahlen befüllen möchte. Hat jemand einen Tipp, wie ich das am schnellsten bewerkstelligen kann?

Vielen Dank.
Devid
57 65 72 20 6C 65 73 65 6E 20 6B 61 6E 6E 2C 20 69 73 74 20 6B 6C 61 72 20 69 6D 20 56 6F 72 74 65 69 6C 21
  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
 
#2

AW: TMemoryStream mit Zufallszahlen füllen

  Alt 11. Jan 2016, 16:14
Ja.
Code:
Wiederhole
  Erzeuge Zufallszahl
  Zufallszahl in Stream schreiben
Bis genug
Was konkret macht dir dabei Probleme?
  1. Erzeugen einer Zufallszahl => Delphi-Referenz durchsuchenRandom
  2. Schreiben einer Zahl in einen Stream => Delphi-Referenz durchsuchenTStream
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 16:16 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#3

AW: TMemoryStream mit Zufallszahlen füllen

  Alt 11. Jan 2016, 16:18
Hallo, ich habe einen TMemoryStream, den ich von einer bestimmten Stelle einlese und mit Zufallszahlen befüllen möchte. Hat jemand einen Tipp, wie ich das am schnellsten bewerkstelligen kann?
Das sind recht dürftige Angaben, die du hier zur Verfügung stellst. Ein TMemoryStream ist ja nicht typisiert, deshalb könnte ich jetzt nicht entscheiden, ob du Float- oder Integerwerte oder die Zahlen in Stringform dort im Stream haben willst. Letztlich kommt es darauf an, was du mit diesem Stream machen willst bzw. wie diese etwas ominöse Anforderung "TMemoryStream mit Zufallszahlen füllen" überhaupt zustande kommt.
  1. Was hast du denn bereits veruscht?
  2. Was ist dabei herausgekommen?
  3. Wie lauten die Fehlermeldungen?

Geändert von Perlsau (11. Jan 2016 um 16:20 Uhr)
  Mit Zitat antworten Zitat
devidespe

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: TMemoryStream mit Zufallszahlen füllen

  Alt 11. Jan 2016, 16:41
Ich lese eine Datei in einen Memory Stream ein, möchte den Inhalt gerne mit Zufallszahlen beschreiben, und das wieder in die Datei zurück schreiben.

Dabei wird die MemoryStream Größe automatisch der Dateigröße mit SetSize angepasst.

Im Prinzip benötige ich eine Schleife, in der ich abhängig von der Streamgröße Zufallszahlen generiere. Bisher habe ich folgendes:

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;
Devid
57 65 72 20 6C 65 73 65 6E 20 6B 61 6E 6E 2C 20 69 73 74 20 6B 6C 61 72 20 69 6D 20 56 6F 72 74 65 69 6C 21
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: TMemoryStream mit Zufallszahlen füllen

  Alt 11. Jan 2016, 16:56
Wie wäre es so:
Delphi-Quellcode:
var i : Integer;
    Beispielstream : TMemoryStream;
...
begin
  Beispielstream:=TMemoryStream.Create;
  Beispielstream.SetSize(DateiGroesseInBytes);

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

  Beispielstream.SaveToFile(Datei);
  Beispielstream.Free;
end;
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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
 
#6

AW: TMemoryStream mit Zufallszahlen füllen

  Alt 11. Jan 2016, 17:01
Das erzeugt natürlich einen Stream in Quattro-Größe

Nehmen wir an, wir setzen Size auf 100 und schreiben jetzt also 100 Integer-Werte (=4 Byte) ...
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
devidespe

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: TMemoryStream mit Zufallszahlen füllen

  Alt 11. Jan 2016, 18:15
Genau genommen ist die Streamgröße durch 4 teilbar und es müssen vorzeichenlose Integerwerte, also DWords sein.
Devid
57 65 72 20 6C 65 73 65 6E 20 6B 61 6E 6E 2C 20 69 73 74 20 6B 6C 61 72 20 69 6D 20 56 6F 72 74 65 69 6C 21
  Mit Zitat antworten Zitat
sahimba

Registriert seit: 14. Nov 2011
Ort: Berlin, Hauptstadt der DDR
137 Beiträge
 
Delphi 10 Seattle Professional
 
#8

AW: TMemoryStream mit Zufallszahlen füllen

  Alt 11. Jan 2016, 18:20
...und es müssen vorzeichenlose Integerwerte, also DWords sein.
Ob das vorzeichenlose DWords, Integer oder Rumpelpumpels sind macht doch keinen Unterschied, so lange es 4 Byte sind. WAS diese 4 Byte darstellen ist am Ende reine "Interpretationssache".
  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
 
#9

AW: TMemoryStream mit Zufallszahlen füllen

  Alt 11. Jan 2016, 18:24
Genau genommen ist die Streamgröße durch 4 teilbar und es müssen vorzeichenlose Integerwerte, also DWords sein.
Wenn da eine zufällige Folge von 4 Byte Blöcken rein soll, wen interessiert dann ob da was vorzeichenlos ist oder nicht?

Lies diese 4 Bytes nachher in ein DWORD und du hast ein DWORD .
Lies diese 4 Bytes nachher in ein Integer und du hast ein Integer .
Lies diese 4 Bytes nachher in ein Double und du hast ein Double .
...


@sahimba Ich mach hier mal das Echo
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
devidespe

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: TMemoryStream mit Zufallszahlen füllen

  Alt 11. Jan 2016, 18:31
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);
Devid
57 65 72 20 6C 65 73 65 6E 20 6B 61 6E 6E 2C 20 69 73 74 20 6B 6C 61 72 20 69 6D 20 56 6F 72 74 65 69 6C 21
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:45 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