Entwickler-Ecke

Sonstiges (Delphi) - An alle Delphi-Programmierer


tetley - Do 11.11.04 10:36
Titel: An alle Delphi-Programmierer
Hallo zusammen,
Eins Vorweg, ich habe so gut wie nichts mit Delphi zu tun.
Ich programmiere derzeit ein Projekt in Visual-Basic, nun stand ich vor einem Problem mit einer Formel für eine Fahrzeitenberechnung eines Browserspiels.
Schließlich fand ich ein OpenSource Projekt welche genau diese Funktion hat, im Quelltext nachgeschaut stieß ich auf folgende relevanten Zeilen:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
if ziel > start then
        begin
          laenge := ziel - start;
          if ziel - start < 10 then laenge := ziel - start
          else 
            laenge := laenge mod 10 + laenge div 10//<---
        end;
        if ziel < start then
        begin
          laenge := start - ziel;
          if start - ziel < 10 then laenge := start - ziel
          else 
            laenge := laenge mod 10 + laenge div 10//<---
        end;


Alles soweit verständlich, nur weiß ich nicht welche Funktionen die Befehle "mod" und "div" haben, aber genau diese Zeile brauch ich - als mathematische Formel :)
Ich war mir nicht sicher ob das Variablen sind oder feste Befehle, habe aber nichts mehr diesbezüglich gefunden.
Wäre sehr dankbar um Hilfe!
MfG,
Steffen

Moderiert von user profile iconUGrohne: Delphi-Tags hinzugefügt.


bms - Do 11.11.04 10:53

Schön, daß du hier im Delphi-Forum ein Aufruf an alle Delphi-Programmierer losschikst. Ja, es könnten auch paar VB Programmierer hier sein.

Dein Titel ist so daneben, daß du wahrscheinlich eine Mitteilung von den Modereatoren kriegst und sich etliche Leute aufregen werden, weil der Titel nichstaussagend ist. Wurde er so klingen:

Hilfe. Was ist bitteschön MOD oder DIV in Delphi?

Ja, damit könnte man leben. Dann würdes du sofort die Antwort kriegen, daß es zwei matematische Operatoren sind.


tetley - Do 11.11.04 11:17

hui.. wofür man heutzutage alles einen Anmotzer bekommen kann :D
mat. Operatoren?
unter div könnt ich mir ja noch was vorstellen aber zu mod fällt mir gerade keine Idee ein.
Ich werd mal googlen, hoffe aber auch hier ne Antwort zu bekommen, danke :wink:

Edit:
Ok hab rausgefunden
div = Integerdivision
mod = Rest (also nur die nachkommazahl ist wichtig)

Moderiert von user profile iconUdontknow: Beiträge zusammengefasst.


Udontknow - Do 11.11.04 11:45

Hallo!

Ändere bitte den Titel, der ist wirklich nicht sehr aussagekräftig. :wink: Einfach den ersten Beitrag editieren. Danke.

Cu,
Udontknow


Pille - Do 11.11.04 13:42

tetley hat folgendes geschrieben:

mod = Rest (also nur die nachkommazahl ist wichtig)


mod steht für Modulo, Ganzzahliger Rest einer Division.

Pille


heinze - Do 11.11.04 14:22


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
i,i2:integer;
.
.
.
i:=7;
i2:=i div 3  // ergibt 2 weil 3 ja 2 mal reinpasst
i2:=i mod 3  // ergibt 1 also den rest


Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.


Sprint - Do 11.11.04 14:23
Titel: Re: An alle Delphi-Programmierer
tetley hat folgendes geschrieben:
Alles soweit verständlich, nur weiß ich nicht welche Funktionen die Befehle "mod" und "div" haben, aber genau diese Zeile brauch ich


Delphi: mod
VB: Mod

Delphi: div
VB: \

Hoffe das reicht als Antwort.


minnime - Do 11.11.04 15:00

Kann es sein dass der dargestellte Algo auch nicht ganz super ist, ich meine das geht auch einfacher:

Delphi-Quelltext
1:
2:
3:
if ziel > start then laenge := ziel - start
else
 laenge := start - ziel;


Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.


Tino - Do 11.11.04 15:05

@tetley: Nochmal, ändere bitte Deinen Titel um. Warum, weshalb und wie hat dir Udontknow bereits geschrieben!


MartinPb - Do 11.11.04 15:49

DIV ist die Integerdivision.

7 / 2 ergibt 3,5

7 div 2 ergibt 3

Der Nachkommawert wird bei DIV nicht nur ignoriert, sondern die ganze Berechnung wird zu einer Integerberechnung, die ein Integerwert lefert. Du kannst nicht


Delphi-Quelltext
1:
2:
3:
4:
var
  i: Integer;
begin
  i := 7 / 3;


nehmen, weil i ein Integer ist. Du mußt also DIV nehmen.

MOD ist Modulo.

7 mod 2 ergibt 1 weil

7 - ((7 div 2) * 2) eben 1 ergibt.

45 mod 6 ergibt 3 weil

45 - ((45 div 6) * 6) eben 3 ergibt.

Wenn man 45 div 6 oder 45 / 6 berechnet, dann liefert 45 div 6 keine Nachkommawerte. Allerdings gibt es bei dieser Berechnung Verluste, weil 45 div 6 Ergebnis 7 liefert und 42 div 6 auch Ergebnis 7 liefert. MOD gibt also den Verlust (oder Restwert) einer eventuellen DIV Berechnung, also die Summe die bei der DIV Berechnung nicht beachtet wird, weil es Nachkommawerte liefern würde.