Autor Beitrag
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Di 13.12.05 01:47 
Probiers doch einfach aus.
Ausschnitt 1 ergibt immer Wahr (Compiler-Meldung).
Ausschnitt 2 ergibt ein 'Out of Range' (lässt sich mit ShowMessage nachweisen).

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 13.12.05 01:48 
Eigentlich ganz einfach.

Der erste Source verursacht auf Grund des Datentyps (WORD) keinen Vorzeichenwechsel, weshalb die Zählvairable IMMER >= 0 ist (Dec(0) --> $FFFF = 65535).

Das zweite erzeugt einfach bei eingeschalteter Bereichsprüfung einen Integer-Overflow wegen 123 * 2^40

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 13.12.05 02:13 
user profile iconBenBE hat folgendes geschrieben:
Der erste Source verursacht auf Grund des Datentyps (WORD) keinen Vorzeichenwechsel, weshalb die Zählvairable IMMER >= 0 ist (Dec(0) --> $FFFF = 65535).

Das zweite erzeugt einfach bei eingeschalteter Bereichsprüfung einen Integer-Overflow wegen 123 * 2^40

Und woher weiß ich, ob das nicht so gewollt war? ;)
mael
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 198
Erhaltene Danke: 39


Delphi XE3 Prof.
BeitragVerfasst: Di 13.12.05 02:26 
Wieso gibt es "statische Arrays" in C#?
Man muß doch immer den new-Operator verwenden. Laut Dokumentation bei MS, ist es nur eine Abkürzung wenn man new wegläßt.

Übrigens ist statisch sehr schwammig. Konstante Arrays gibt es nämlich auch nicht in C#, da gab es nur Workarounds (wo man die readonly machen kann).
Was also soll statisch bedeuten?
derDoc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 623

Win Vista Prof
D2007 Prof
BeitragVerfasst: Di 13.12.05 08:37 
Mich würde mal interessieren, wie man in C# ein statisches Array beginnend mit der Indizierung bei 6 mit 5 einzelnen Bytes anlegt.
Bei Delphi wäre das:
ausblenden Delphi-Quelltext
1:
xyz: array [6..10of Byte;					


Was hat es eigentlich mit den Mengen (neudeutsch Sets) auf sich? Die Aufzählung von Konstanten (neudeutsch Enumeration) wie sie in C# möglich ist stellt also eurer Ansicht keine Menge dar?

_________________
MfG derDoc
There are only 10 types of people: those who understand binary and those who don't.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 13.12.05 08:49 
user profile iconLuckie hat folgendes geschrieben:
user profile iconBenBE hat folgendes geschrieben:
Der erste Source verursacht auf Grund des Datentyps (WORD) keinen Vorzeichenwechsel, weshalb die Zählvairable IMMER >= 0 ist (Dec(0) --> $FFFF = 65535).

Das zweite erzeugt einfach bei eingeschalteter Bereichsprüfung einen Integer-Overflow wegen 123 * 2^40

Und woher weiß ich, ob das nicht so gewollt war? ;)

Ähmmm, weil eine Endlosschleife auftritt???

Obwohl: Ich würde jeden Programmierer feuern, der nicht das will, was sein Source macht :mrgreen:

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Stefan.Buchholtz
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 612

WIN 2000, WIN XP, Mac OS X
D7 Enterprise, XCode, Eclipse, Ruby On Rails
BeitragVerfasst: Di 13.12.05 10:03 
user profile iconmael hat folgendes geschrieben:
Wieso gibt es "statische Arrays" in C#?
Man muß doch immer den new-Operator verwenden. Laut Dokumentation bei MS, ist es nur eine Abkürzung wenn man new wegläßt.

Übrigens ist statisch sehr schwammig. Konstante Arrays gibt es nämlich auch nicht in C#, da gab es nur Workarounds (wo man die readonly machen kann).
Was also soll statisch bedeuten?


Das würde ich auch gerne mal wissen. Die array-Syntax in C# ist doch

ausblenden C#-Quelltext
1:
2:
3:
int[]   intArray;

intArray = new int[10];


Natürlich kann man Deklaration und Initialiserung auch zu einer Zeile zusammenfassen:

ausblenden C#-Quelltext
1:
int[]   intArray = new int[10];					


aber auf jeden Fall kann ich zu einem späteren Zeitpunkt der gleichen array-Variable ein anderes array zuweisen:

ausblenden C#-Quelltext
1:
intArray = new int[20];					


Beim Erzeugen des Array-Objektes kann man die Grösse auch durch eine Variable festlegen:

ausblenden C#-Quelltext
1:
intArray = new int[arrSize];					


Auf jeden Fall wird das Array zur Laufzeit auf dem Heap erzeugt. Für mich ist das ein dynamisches Array. Wie ist denn eure Definition?

Stefan

_________________
Ein Computer ohne Windows ist wie eine Schokoladentorte ohne Senf.
opfer.der.genauigkeit
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754
Erhaltene Danke: 1



BeitragVerfasst: Di 13.12.05 10:16 
user profile iconLuckie hat folgendes geschrieben:
user profile iconBenBE hat folgendes geschrieben:
Der erste Source verursacht auf Grund des Datentyps (WORD) keinen Vorzeichenwechsel, weshalb die Zählvairable IMMER >= 0 ist (Dec(0) --> $FFFF = 65535).

Das zweite erzeugt einfach bei eingeschalteter Bereichsprüfung einen Integer-Overflow wegen 123 * 2^40

Und woher weiß ich, ob das nicht so gewollt war? ;)


Wie recht du doch hast. ;)

_________________
Stellen Sie sich bitte Zirkusmusik vor.
Amateur
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: Di 13.12.05 10:28 
super ich hatte bei der for schleife keinen fehler oder ne warnung. woher soll ich wissen dass das ganze so nicht gewollt ist???
kann doch keiner wissen dass ihr keinen overflow wollt. bei manchen programmen ist sowas bestimmt erwünscht

_________________
"Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
Robert_G
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 416


Delphi32 (D2005 PE); Chrome/C# (VS2003 E/A, VS2005)
BeitragVerfasst: Di 13.12.05 10:32 
user profile iconStefan.Buchholtz hat folgendes geschrieben:
Auf jeden Fall wird das Array zur Laufzeit auf dem Heap erzeugt. Für mich ist das ein dynamisches Array. Wie ist denn eure Definition?
Array Instanzen sind immer statisch in .Net. IMMER! Dyn. Arrays wurden wahrscheinlich nichtmal in Erwägung gezogen (wozu auch ;) ).

Ich habe echt nicht an den overflow gedacht. Aber ich hatte den ersten angekreuzt, auch wenn er in den Ergebnissen nicht fett dargestellt war... :gruebel:

btw: Die Fragen waren diesmal ziemlich gut (mit dieser gewissen Prise Hinterhältigkeit :mrgreen: )
Stefan.Buchholtz
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 612

WIN 2000, WIN XP, Mac OS X
D7 Enterprise, XCode, Eclipse, Ruby On Rails
BeitragVerfasst: Di 13.12.05 11:00 
user profile iconAmateur hat folgendes geschrieben:
super ich hatte bei der for schleife keinen fehler oder ne warnung. woher soll ich wissen dass das ganze so nicht gewollt ist???
kann doch keiner wissen dass ihr keinen overflow wollt. bei manchen programmen ist sowas bestimmt erwünscht


Unwahrscheinlich - und wenn doch ist es sehr unsaubere Technik. Das führt nämlich dazu, dass die Schleife nicht mehr funktioniert, wenn man die Überlaufprüfung einschaltet. Wenn der Überlauf gewollt ist, schaltet man am Schleifenbeginn die Überlaufprüfung (mit {$Q-}) aus und schreibt einen Kommentar dran.
Noch dazu ist es unportabel: Wenn Delphi mal mit einem 64-Bit Compiler kommt, bei dem ein Integer standardmässig 64 Bit gross ist, gibt es keinen Überlauf mehr und die Schleife liefert ein anderes Ergebnis.

Stefan

_________________
Ein Computer ohne Windows ist wie eine Schokoladentorte ohne Senf.
Amateur
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: Di 13.12.05 12:57 
ja aber es war ja auch nur die schleife dargestellt. kann ja gut sein dass die compileranweisung davor kommt.
außerdem arbeiten ja bestimmte trojaner oder viren (so genau kenn ich mich damit nicht aus) mit overflows. und da ist so etwas sicher gewollt.
ob die das nun mit so einer schleife machen sei dahin gestellt. jedenfalls kann es durchaus sein dass das ganze gewollt ist.
denn ich hab meine glaskugel leider verloren. ich kann nicht wissen was gewollt ist. selbst bei der ersten kann es gewollt sein. da hätte man definieren müssen was das programm leisten soll. wobei das bei den codes die irgendwie eh keinen praktischen nutzen haben ziemlich schwer geworden wäre...

_________________
"Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 13.12.05 13:07 
user profile iconAmateur hat folgendes geschrieben:
ja aber es war ja auch nur die schleife dargestellt. kann ja gut sein dass die compileranweisung davor kommt.
außerdem arbeiten ja bestimmte trojaner oder viren (so genau kenn ich mich damit nicht aus) mit overflows. und da ist so etwas sicher gewollt.

Alle, die das ausgewählt haben, wurden an das BKA gemeldet. :mrgreen:
Vielleicht wurde bei dieser Frage auf den gesunden Menschenverstand gehofft?
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Di 13.12.05 14:48 
user profile iconCalyptus hat folgendes geschrieben:
Ich verstehe die erste Aufgabe (vom 12.) immernoch nicht.... habt ihr dazu eine Erklärung?


Der erste Ausschnitt soll augenscheinlich 6 mal durchlaufen bis val <= -1 ist. Weil Variablen vom Typ Word aber niemals negativ werden gibt es eine Endlosschleife.

Der zweite Ausschnitt soll hingegen den Wert in val 40 mal verdoppeln. Der erzeugte Wert wird jedoch 0 weil das Ergebnis für einen Integer zu groß wird, einen Überlauf erzeugt.

//Edit: gibt man den Code so ein, erhält man die Fehlermeldungen vom Compiler:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var val: Word;
    val2: Integer;
begin
for val := 5 downto -1 do
  begin
  ShowMessage('Jippi');
  end;

val2 := 123*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2;
end;

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mi 14.12.05 01:17 
Hallo!

Es ist schon wieder ein paar Tage her als wir das letzte Mal eine Frage raus genommen haben. Also: :-D Bei dem letzten Gewinnspiel (13.12) habe ich die zweite Frage (Alignment) aus der Auswertung genommen da doch wohl zwei Antworten richtig waren.

Gruß
Tino
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Mi 14.12.05 01:20 
Und, wie Tino mir in der SB mitteilte, die verbliebene Frage wurde leicht modifiziert (Punkt f herausgenommen). Betroffen waren 10 Personen denen kein Nachteil entstand.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Mi 14.12.05 01:32 
Hallo,

Ergebnis nicht in Fettschrift, aber doch richtig :wink:

Zitat:

Die grün dargestellten Antworten sind die richtigen Antworten
Die fett dargestellten Antworten sind Deine Antworten.


Antworten:

  • dbcae

Diese Frage hast Du richtig beantwortet.


??

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Mi 14.12.05 07:50 
user profile iconLannes hat folgendes geschrieben:
Hallo,

Ergebnis nicht in Fettschrift, aber doch richtig :wink:

Zitat:

Die grün dargestellten Antworten sind die richtigen Antworten
Die fett dargestellten Antworten sind Deine Antworten.


Antworten:

  • dbcae

Diese Frage hast Du richtig beantwortet.


??


Die AW stimmt schon. Hin und wieder kommt es schon vor, dass richtige Antworten nicht fett markiert werden (bei diesem Gewinnspiel zwar erst das Erste mal so weit ich mich erinnern kann, aber bei älteren Gewinnspieln ist es auch schon so).
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mi 14.12.05 11:40 
Hallo!

Ob du eine Frage korrekt beantwortet hast wird in der Tipp-Tabelle in der Datenbank abgelegt und dieser Eintrag ist entscheident dafür ob "Diese Frage hast Du richtig beantwortet." angezeigt wird oder nicht. Das die Antwort nicht in fett dargestellt wird hängt damit zusammen, dass das Eingabefeld beim Antworten ein Editfeld war. Müsste ich bei Gelegenheit noch mal ändern.

Gruß
Tino
JayK
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1013



BeitragVerfasst: Mi 14.12.05 15:46 
Hallo,

bei der heutigen 2. Frage (mit dem TQuery)
Zitat:
...TQuery ein Ergebnis zurückliefert, in dem auch Änderungen zulässig sind?

Änderungen durch den Benutzer oder einfach nur im Quelltext? :?

Grüße
JayK