AGB  ·  Datenschutz  ·  Impressum  







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

Zufallszahl generieren

Ein Thema von nixalsverdruss · begonnen am 8. Jan 2009 · letzter Beitrag vom 8. Jan 2009
Antwort Antwort
nixalsverdruss

Registriert seit: 22. Nov 2008
128 Beiträge
 
Delphi 2005 Personal
 
#1

Zufallszahl generieren

  Alt 8. Jan 2009, 18:10
Hallo,
ich such schon seit ner Ewigkeit den Fehler in diesem Quellcode:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
zahl:integer;
begin
randomize;
zahl:=random(21);
Label1.Caption:= zahl;
end;

end.
Kann mir jemand helfen?
Danke schon mal im Voraus
nixalsverdruss

PSie Zeile mit dem Label wird rot...
Goldene Regel: Was man an Kraft spart, kann man an Faulheit zusetzen!
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#2

Re: Zufallszahl generieren

  Alt 8. Jan 2009, 18:11
Du weist einer String-Property einen Integer-Wert zu. Das geht in Delphi nicht (Typsicherheit)!!
Lösung: Typecasting -> IntToStr(zahl)
  Mit Zitat antworten Zitat
nixalsverdruss

Registriert seit: 22. Nov 2008
128 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Zufallszahl generieren

  Alt 8. Jan 2009, 18:13
Ahso...klar!!!!!! Kann ja im Label nur String wiedergeben
Danke! Ich hätt noch Stunden gesucht...
Goldene Regel: Was man an Kraft spart, kann man an Faulheit zusetzen!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Zufallszahl generieren

  Alt 8. Jan 2009, 18:13
Und bitte Randomize nur einmal aufrufen. Am besten beim Programmstart.


Zitat von nixalsverdruss:
Ahso...klar!!!!!! Kann ja im Label nur String wiedergeben
Danke! Ich hätt noch Stunden gesucht...
Du hättest dir nur die Fehlermeldung druchlesen brauchen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#5

Re: Zufallszahl generieren

  Alt 8. Jan 2009, 18:15
Hast du mal auf das Ausgabefenster (bei Turbo Delphi ist das ganz unten) geachtet? Da steht doch im Klartext, was der Fehler ist.

Übrigens sollte man "Randomize" nur einmal, z.B. im OnCreate, aufrufen und nicht bei jedem ButtonClick.

Edit: zu spät...
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Zufallszahl generieren

  Alt 8. Jan 2009, 19:28
Zitat von Meflin:
Lösung: Typecasting -> IntToStr(zahl)
Das ist kein Typecasting sondern eine Funktion, die eine Zahl in einen lesbaren String umwandelt. Mit Typecasting weisst man Delphi an, den durch die Variable belegten Speicherbereich als einen anderen Datentyp anzusehen. Das kann gutgehen, führt aber u.U. zu Abstürzen. Hier würde Typecasting gar nicht funktionieren bzw. komische Resultate erzeugen.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#7

Re: Zufallszahl generieren

  Alt 8. Jan 2009, 20:50
Natürlich ist IntToStr eine Variante expliziten Typecastings
Siehe dazu auch http://de.wikipedia.org/wiki/Typumwandlung
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Zufallszahl generieren

  Alt 8. Jan 2009, 21:07
Na ja. Ich bleibe bei meiner Interpretation eines expliziten Typecasting:
String(anInteger) Das geht in C# ebensowenig gut, wie in Java. Auch der englische Artikel legt jedoch nicht eindeutig fest, ob eine Konvertierung, bzw. Interpretation einer Zahl als Zeichenkette (IntToStr(123)=> '123' ist nur eine mögliche Interpretation, eine andere wäre IntToStr(123)='Einhundertdreiundzwanzig') auch ein Typecasting ist. Zumal Wikipedia schreibt:
Zitat:
Eine explizite Typumwandlung bezeichnet man auch als type cast (aus dem Englischen).
In meinen Augen ist die Funktion 'IntToStr' keine Typecasting-Funktion, sondern zeigt eine mögliche textuelle Darstellung einer Zahl, aber das ist vielleicht Geschmacks- und Auslegungssache.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.452 Beiträge
 
Delphi 12 Athens
 
#9

Re: Zufallszahl generieren

  Alt 8. Jan 2009, 22:29
Sind das dann alles Explizite Type Casts?

var
s: string;
i: Integer;
begin
i := 12345;
s := IntToStr(i); // s = '12345';
s := IntToHex(i, 4); // s = '3039'
s := string(i); // EAccessViolation
end;

Warum kommt dann aber immer was anderes Raus?
Fällt dann die Funktion Format auch unter Type Casting?
Was ist dann der Unterschied zwischen Type Casting und Type Conversion?
Uwe Raabe
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:34 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