Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Warn Meldung Vorzeichenbehaftet und lose Typen
abi - Di 25.05.04 11:18
Titel: Warn Meldung Vorzeichenbehaftet und lose Typen
Hallo alle zusammen
ich habe hier im Forum mal eine Warte schleife gefunden. Sie funktioniert macht überhaupt keine Probleme aber ich bekomme immer eine Warnmeldung jetzt weiss ich nicht ob des irgendwann mal Probleme gibt oder egal ist. :nixweiss:
Die Warnung :hair:
Vorzeichenbehaftete und lose Typen werden Kombiniert -beide Operanden werden erweitert.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure Wait(time: word; bstop1: Boolean); var start: integer; begin start := GetTickCount; while GetTickcount-start <= time do begin Application.ProcessMessages; if bstop = True then begin exit; end; end; end; |
Ciao
Abi
Moderiert von
Peter Lustig (11:51, 25.05.2004): Code- durch Delphi-Tags ersetzt
Delete - Di 25.05.04 11:24
Delphi-Quelltext
1:
| while GetTickcount-start <= time |
GetTickCount ist ein DWORD, da du
start ein Integer davon abziehst, erweitert der Compiler den Datentyp zu einem Integer. So weit so gut. Jetzt vergleichst du das aber mit einem Word und das ist vorzeichenlos. Deswegen die Meldung. Deklarier alles als vorzeichenlos und es sollte klappen.
Udontknow - Di 25.05.04 11:35
GetTickcount liefert ein DWord zurück, also ein LongWord (32Bit ohne Vorzeichen), nicht ein Longinteger (was dasselbe wie Integer wäre).
Cu,
Udontknow
abi - Di 25.05.04 11:37
Hallo Lucki
erst mal danke, jetzt bin ich mir nur nicht sicher ob ich dich richtig verstanden habe. :roll:
Ich habe jetzt start zu einer Word Variablen gemacht.
Dann ist zwar die Warnung weg aber dafür geht die schleife nicht mehr. :autsch:
Und GetTickCount hab ich nirgends zugeordnet. :crying:
Tja was soll ich dazu sagen. :nixweiss:
MMMM, kannst du mir nochmal helfen. :D
abi
Udontknow - Di 25.05.04 11:38
Es kommt sehr wahrscheinlich zu einem Überlauf. Mach Start zu einem DWord bzw. zu einem Longword.
Cu,
Udontknow
abi - Di 25.05.04 11:39
wenn GetTickCound ein Integer liefert, dann würde des ja erklären warum des net mehr. Geht
Muss ich mein time in ein Integer Variable ändern.
Udontknow - Di 25.05.04 11:41
Wie ich bereits sagte, liefert GetTickCount Longword (Wertebereich 0..4294967295) zurück, und nicht ein Integer (-2147483648..2147483647).
Cu,
Udontknow
abi - Di 25.05.04 11:42
ok, es geht. :dance: :dance2: :dance:
Vielen dank nochmal. Hab jetzt start zu einem DWord gemacht.
mercy :beer:
Delete - Di 25.05.04 11:46
Udontknow hat folgendes geschrieben: |
GetTickcount liefert ein DWord zurück, also ein LongWord (32Bit ohne Vorzeichen), nicht ein Longinteger (was dasselbe wie Integer wäre).
Cu,
Udontknow |
Danke, habe mich vertan. Ich bessere es aus.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!