AGB  ·  Datenschutz  ·  Impressum  







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

Mod Anweisung funktioniert nicht

Ein Thema von Cr3at0r · begonnen am 28. Jun 2007 · letzter Beitrag vom 28. Jun 2007
Antwort Antwort
Cr3at0r

Registriert seit: 6. Jul 2006
52 Beiträge
 
#1

Mod Anweisung funktioniert nicht

  Alt 28. Jun 2007, 12:17
Guten Mittag,

folgender Quellcode:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Zahl, Rest: real;
    Zaehler, Teiler: Integer;
begin
  Zahl := StrToFloat(Edit1.Text);
  Zaehler := 0;
  Rest := 0;
  Teiler := 2;
  Repeat
    Rest := Zahl Mod Teiler; //<--[Fehler] Teiler.pas(37): E2015 Operator ist auf diesen Operandentyp nicht anwendbar
    Zahl := Zahl / 2;
  Until
    Rest <>0;

  Label1.Caption := FloatToStr(Zaehler);
end;
Wo liegt der Fehler? Finde ihn nicht.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Mod Anweisung funktioniert nicht

  Alt 28. Jun 2007, 12:18
mod funktioniert nur mit ganzzahlen. Zahl ist jedoch vom Typ "real"
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Cr3at0r

Registriert seit: 6. Jul 2006
52 Beiträge
 
#3

Re: Mod Anweisung funktioniert nicht

  Alt 28. Jun 2007, 12:24
Args ja stimmt, dank dir.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Mod Anweisung funktioniert nicht

  Alt 28. Jun 2007, 12:29
für Realzahlen kannst du so den Rest berechnen (alle Variablen sind vom Typ Real bei dem Beispiel):
lRest := lDivident - Trunc(lDivident / lDivisor) * lDivisor;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Cr3at0r

Registriert seit: 6. Jul 2006
52 Beiträge
 
#5

Re: Mod Anweisung funktioniert nicht

  Alt 28. Jun 2007, 12:34
Mit Integer geht es nun, aber jetzt läuft die repeat..until Schleife immer ins nirgendwo.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Zahl, Rest, Zaehler, Teiler: Integer;
begin
  Zahl := StrToInt(Edit1.Text);
  Zaehler := 0;
  Teiler := 2;
  Repeat
    Rest := Zahl Mod Teiler;
    Zahl := Zahl XOR 2;
    Inc(Zaehler);
  Until
    Rest <> 0;

  Label1.Caption := FloatToStr(Zaehler);
end;
Dabei sollte sie ja eigentlich stoppen sobald Rest <> 0 wird, tut sie irgendwie nicht.
Ne Idee woran das liegen mag?
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Mod Anweisung funktioniert nicht

  Alt 28. Jun 2007, 12:37
Tja, da kannst du vermutlich lange warten.

Zahl:=Zahl xor 2; macht nichts anderes, als das 1. Bit von Zahl (von 0 beginnend) immer zu "wechseln". Mehr auch nicht.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Mod Anweisung funktioniert nicht

  Alt 28. Jun 2007, 12:41
Halo,

was willst du durch das xor erreichen ?

4 xor 2 = 6
6 xor 2 = 4

Endlos-Schleife, weil 4 und 6 keinen Rest bei mode 2 haben.


Heiko
PS:
Das xor hat der Taschenrechner von Windows ausgerechnet ...
Heiko
  Mit Zitat antworten Zitat
Cr3at0r

Registriert seit: 6. Jul 2006
52 Beiträge
 
#8

Re: Mod Anweisung funktioniert nicht

  Alt 28. Jun 2007, 12:47
Hatte in der Hilfe gelsen das es unter anderem ein Teiler für Integer Werte sein soll, muss ich mich verlesen haben.
Wie dem auch sei, hab ich durhc die Formel von SirThornberry das hinbekommen, danke euch.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Mod Anweisung funktioniert nicht

  Alt 28. Jun 2007, 13:05
Zitat von Cr3at0r:
Hatte in der Hilfe gelsen das es unter anderem ein Teiler für Integer Werte sein soll, muss ich mich verlesen haben.
Wie dem auch sei, hab ich durhc die Formel von SirThornberry das hinbekommen, danke euch.
Die Hilfe meinte sichlerlich "shr"
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  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 22:11 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