AGB  ·  Datenschutz  ·  Impressum  







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

INT64 nicht ordinal?

Ein Thema von Dannyboy · begonnen am 23. Aug 2004 · letzter Beitrag vom 23. Aug 2004
Antwort Antwort
Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#1

INT64 nicht ordinal?

  Alt 23. Aug 2004, 11:19
Hallo zusammen,
in einem Programm bekam ich bei diesem Quelltext ...
Delphi-Quellcode:
var i : int64;
begin
  for i:= 0 to 1000 do
    //...
... die Fehlermeldung, dass ein ordinaler Datentyp für die zählergesteuerte Schleife notwendig ist. Da ich aber den int64-Typ benötige, habe ich das nun leider so machen müssen:
Delphi-Quellcode:
var i : int64;
i:= 0;
while i <= 1000 do
begin
  //<tue irgend was>
  inc(i);
end;
Gibt es bessere Vorschläge/Varianten?
How much wood would a wood-chuck chuck if a wood-chuck would chuck wood?
Check this out.
DANNYBOY
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: INT64 nicht ordinal?

  Alt 23. Aug 2004, 11:20
Int64 ist nicht ordinal, weil es ein zusammengesetzter Datentyp ist. (Passt nicht in ein Prozessorregister - oder so.)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: INT64 nicht ordinal?

  Alt 23. Aug 2004, 11:21
Ja, Integer nehmen, oder Cardinal

Int64 ist ein zusammengesetzter Datentyp - native 64Bit-Datentypen gibts nur unter 64Bit CPUs mit 64Bit OS und einer Sprache die für 64Bit ausgelegt ist
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

Re: INT64 nicht ordinal?

  Alt 23. Aug 2004, 11:22
Delphi-Quellcode:
repeat
  ...
  Inc(i);
until i = 1000;
ist imho schneller!
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: INT64 nicht ordinal?

  Alt 23. Aug 2004, 11:24
@Stevie: Aber auch nur, weil du auf "=" und nicht "<=" prüfst. Ansonsten ist der einzigen Unterschied, dass die repeat-Schleife mindestens ein Mal durchlaufen wird, while aber erst garnicht wenn die Abbruchbedingung von vorne herein nicht passt.
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

Re: INT64 nicht ordinal?

  Alt 23. Aug 2004, 11:27
Zitat von dizzy:
@Stevie: Aber auch nur, weil du auf "=" und nicht "<=" prüfst. Ansonsten ist der einzigen Unterschied, dass die repeat-Schleife mindestens ein Mal durchlaufen wird, while aber erst garnicht wenn die Abbruchbedingung von vorne herein nicht passt.
Ich dachte, die wird in asm irgendwie anders umgesetzt, so dass sie schneller ist...
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: INT64 nicht ordinal?

  Alt 23. Aug 2004, 11:34
Nö, beides läuft im Wesentlichen auf ein "cmp" und ein "jp" oder "jz" oder "jnz" oder halt irgendeinen Sprungbefehl hinaus. Evtl. auch noch die eine oder andere Addition/Subtraktion, je nach Abbruchbedingung.
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#8

Re: INT64 nicht ordinal?

  Alt 23. Aug 2004, 14:06
Zitat von Stevie:
Zitat von dizzy:
@Stevie: Aber auch nur, weil du auf "=" und nicht "<=" prüfst. Ansonsten ist der einzigen Unterschied, dass die repeat-Schleife mindestens ein Mal durchlaufen wird, while aber erst garnicht wenn die Abbruchbedingung von vorne herein nicht passt.
Ich dachte, die wird in asm irgendwie anders umgesetzt, so dass sie schneller ist...
Ist soweit ich weiss auch so. Wurde auch mal hier im Forum diskutiert glaube ich.

Wenn du nur einen bestimmten bereich hochzählen willst, der auch in einen integer passt, würde es auch gehen einen integer zu verwenden und den int64startwert dazuzurechnen.

Nur mal so
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#9

Re: INT64 nicht ordinal?

  Alt 23. Aug 2004, 16:47
Warum nimmst du nicht einen Integer?
Wenn du explizit einen Int64 innerhalb der Schleife brauchst, dann kannst du ja den Integer umtypen.
Eine Schleife die ernsthaft einen Int64 zum Zaehlen braucht ist mit grosser Wahrscheinlichkeit Unsinn.
  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:53 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