![]() |
Delphi-Version: 5
SpinEdit Fehler: Kein gültiger Integewert
Delphie gibt mir bei einer Schleife andauernd eine Fehlermeldung, die das ganze Programm abstürzen, und mich verzweifeln, lässt:
Im Projekt Project1.exe ist eine Exception der Klasse EConvertError aufgetreten. Meldung: ''' ist kein gültiger Integerwert'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
Delphi-Quellcode:
Könnte mir jemand helfen? :(
var i:Integer;
begin if Tipp_ok(Tippzahlen) = true then begin sortiere_durch_Auswahl(Tippzahlen); zeige_Tip(Tippzahlen); for i:=1 to StrToInt(SpinEdit7.Text) do {in dieser Zeile liegt der Fehler} begin bestimme_Gewinnzahlen(Gew, zZahl); zeige_Gew(Gew, zZahl); zeige_Statistik(Rang(Tippzahlen, Gew, zZahl)); end; end else ShowMessage('Deine Tippzahlen sind nicht gültig'); end; |
AW: SpinEdit Fehler: Kein gültiger Integewert
Was steht den dann im SpinEdit?
Delphi-Quellcode:
for i:=1 to StrToIntDef(SpinEdit7.Text, 1) do
|
AW: SpinEdit Fehler: Kein gültiger Integewert
Eine beliebige Zahl, ich hab immer 4 oder so eingegeben.
aber dann ist es doch eig nciht leer! ich habe vorher nie mit spinedit's gearbeitet, kann es sein dass man etwas anderes als spinedit7.text schreiben muss? |
AW: SpinEdit Fehler: Kein gültiger Integewert
Die Text Eigenschaft liefert dir den Wert als Zeichenkette. Entweder wandelst du diese in einen Integer um oder du nimmst gleich die Value Eigenschaft.
|
AW: SpinEdit Fehler: Kein gültiger Integewert
Hab ich beides versucht
Delphi sagt jedes mal es sei es sei kein gültiger Integerwert |
AW: SpinEdit Fehler: Kein gültiger Integewert
Dann schau dir mal im Debugger an, was da drin steht
|
AW: SpinEdit Fehler: Kein gültiger Integewert
Der Inhalt ist 4, wie angegeben
|
AW: SpinEdit Fehler: Kein gültiger Integewert
Guten Abend...
probier mal:
Delphi-Quellcode:
Objektinspektor des SpinEdit:
var i:Integer;
begin if Tipp_ok(Tippzahlen) then // = true entfernt begin sortiere_durch_Auswahl(Tippzahlen); zeige_Tip(Tippzahlen); SpinEdit7.Enabled:= False; // während der Schleife nicht änderbar for i:=1 to SpinEdit7.Value do {in dieser Zeile liegt der Fehler} begin bestimme_Gewinnzahlen(Gew, zZahl); zeige_Gew(Gew, zZahl); zeige_Statistik(Rang(Tippzahlen, Gew, zZahl)); end; SpinEdit7.Enabled:= True; // wieder aktiv setzen end else ShowMessage('Deine Tippzahlen sind nicht gültig'); end; - Increment auf 1 - EditorEnabled auf False - du kannst manuell nix eintragen sondern nur blättern (verhindert evt. Fehleingaben) - MinValue mindestens auf 1, da deine Schleife bei 1 beginnt - ggf. MaxValue setzen PS: das mit dem Value wurde schon erklärt. |
AW: SpinEdit Fehler: Kein gültiger Integewert
In meiner Erinnerung ist das so:
Wenn man den alten Text (z.B. "14") markiert und dann z.B. "7" tippt, wird erst '' (also ein Leerstring) verarbeitet und dann "7". Das würde ich als Fehler in der Komponente bezeichnen. Brich mal die Verarbeitung ab, wenn Text leer ist bzw. arbeite dann mit 0 weiter. |
AW: SpinEdit Fehler: Kein gültiger Integewert
ich hab mal das von haentschman versucht (danke )
aber es funktioniert nicht :( jetzt kommt allerdings auch keine fehlermeldung mehr ich hab mal versucht im objektinspektor das value auf 1 zu setzten aber es setzt sich immer wieder auf 0 zurück, ist das normal? @stahli: wie ich soll das programm mit 0 als eingabewert starten? |
AW: SpinEdit Fehler: Kein gültiger Integewert
Zitat:
Zitat:
Nachtrag: ich kann jeden Wert in Value setzen. welche Delphiversion benutzt du ? |
AW: SpinEdit Fehler: Kein gültiger Integewert
Hier mal ein Testprojekt.
Einfach ein SpinEdit und ein Memo und schauen, was das SpinEdit an Werten liefert:
Delphi-Quellcode:
Folgende Werte werden verarbeitet:
unit fTestSpinEdit;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Spin; type TForm1 = class(TForm) SpinEdit1: TSpinEdit; Memo1: TMemo; procedure SpinEdit1Change(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.SpinEdit1Change(Sender: TObject); begin Memo1.Lines.Add('"' + SpinEdit1.Text + '"'); end; end. Zitat:
SpinEdit "feuert" dann mit einem Leerstring. Die Ereignisbehandlung könntest Du dann z.B. abbrechen.
Delphi-Quellcode:
if SpinEdit.Text = '' then Exit;
|
AW: SpinEdit Fehler: Kein gültiger Integewert
Zitat:
|
AW: SpinEdit Fehler: Kein gültiger Integewert
Zitat:
minvalue hat den wert 1 und maxvalue hab ich nichts angegeben ich benutze delphie 7 ich hab den Debugger drüberlaufen lassen das spinedit7.value hat den wert : ([csInheritable], False, False, (0, 0)) sagt euch das was?? :gruebel: |
AW: SpinEdit Fehler: Kein gültiger Integewert
Zitat:
Zur Erklärung: "Value" ist eigentlich nur ein Integer, sonst nix. Du solltest uns hier als Wert also eigentlich nur eine Zahl angeben können und sonst nix. Hast du dich vielleicht verklickt/vertippt, als du den Wert rausgesucht hast? Und noch eine Frage, die hier ja schon angesprochen wurde, aber auf die du nicht genau eingegangen bist: An welcher Stelle rufst du diese Funktion eigentlich genau auf? Bis denn Bommel |
AW: SpinEdit Fehler: Kein gültiger Integewert
hab grad nochmal nachgeguckt, nein ich hab mich nciht verklickt
ich rufe sie ganz am ende meines prpgramms auf. |
AW: SpinEdit Fehler: Kein gültiger Integewert
Wenn Du nur eine (Formular-)Unit hast, dann poste sie hier mal.
Ansonsten häng das Projekt mal als Zip an... |
AW: SpinEdit Fehler: Kein gültiger Integewert
Liste der Anhänge anzeigen (Anzahl: 1)
aufgepasst da sind noch einige fehler drin ^^
|
AW: SpinEdit Fehler: Kein gültiger Integewert
Ohne mich tiefgreifend damit beschäftigt zu haben ist mir erst einmal aufgefallen, dass Du in der Funktion Neu Result nicht setzt.
Das Programm bleibt daher dort hängen. So etwas kannst Du finden, indem Du einen Breakpoint setzt und das Programm schrittweise debugst. Außerdem würde ich auf eine "ordentliche" (also übersichtliche) Formatierung achten (Einrückungen von begin-end-Blöcken usw.). Man unterschätzt das gern, aber das hilft ungemein bei der Fehlersuche. Dann brauchst Du auch nicht auf
Delphi-Quellcode:
prüfen.
if Ausdruck = True then ...
Delphi-Quellcode:
oder
If Ausdruck then
Delphi-Quellcode:
ist viel besser zu lesen.
if not Ausdruck then
Schau mal, ob Dir das schon hilft und dann kannst Du ja wieder fragen... |
AW: SpinEdit Fehler: Kein gültiger Integewert
Also bei mir stürzt die IDE (D2006) ab, wenn ich einen Breakpoint setze.
|
AW: SpinEdit Fehler: Kein gültiger Integewert
Zitat:
|
AW: SpinEdit Fehler: Kein gültiger Integewert
danke :)
hm ich dachte man könnte eunfach auch den namen der funktion nehmen statt result. meinst du es dann so:
Delphi-Quellcode:
function neu (Gew: TLottofeld; bisher, wert: Byte): Boolean; var bool: boolean;j: Byte; begin bool:=false; for j:=bisher downto 1 do begin if Gew[j] <> wert then bool:=true; result:=bool; end; end; |
AW: SpinEdit Fehler: Kein gültiger Integewert
Man kann auch den Funktionsnamen nehmen oder
Delphi-Quellcode:
Result := True;
|
AW: SpinEdit Fehler: Kein gültiger Integewert
Delphi-Quellcode:
... ist auch logisch, da das Grid leer ist. Der Fehler hatte nix mit dem SpinEdit zu tun.
procedure TForm1.zeige_Statistik (wert: Byte);
var i:Integer; begin i:= StrToInt(Gridstats.Cells[1,wert]); // hier kommt der "" ist kein Integer Wert Fehler inc(i); Gridstats.Cells[1,wert] := IntToStr(i); end; Anmerkungen: - bei den SpinEdit für den Tipp Min und Max setzen. Oder gibts 6 aus 1200 ? 8-) - Deine Ziehung hat 2 gleiche Zahlen gezogen. - in Tippzahlen sind verkehrte Werte. 1. immer 0 dann die Tipps, der letzte fehlt. Liegt wahrscheinlich in den 2 Schleifen in Tipp_ok alles in allem als Empfehlung: - bringe das Funktionsdurcheinander in Ordnung nicht jeder Kram muß gleich, wenn nur einmal verwendet ausgelagert werden. - male dir den Programmablauf mal auf Papier. |
AW: SpinEdit Fehler: Kein gültiger Integewert
Oh ja, sorry :oops:
Das "neu" habe ich übersehen. Aber an der Stelle ging es bei mir nicht weiter. Offenbar wurde die Bedingung nicht erfüllt und die repeat-Schleife daher nicht verlassen. Vielleicht musst Du Dir die dortige Logik nochmal anschauen. Ein Problem mit dem SpinEdit habe ich übrigens nicht festgestellt. |
AW: SpinEdit Fehler: Kein gültiger Integewert
hm stimmt es knnte irgednwie an
Delphi-Quellcode:
aber wenn der fehler bei der Prozedur zeige_Statistik liegt, warum werden dann die Prozeduren davor auch nciht ausgeführt?
if Tipp_ok(Tippzahlen) = true then
Nein das lag am Sortieren, dass habe ich aber bereits behoben. |
AW: SpinEdit Fehler: Kein gültiger Integewert
Zitat:
Delphi-Quellcode:
Anmerkung: Debuggen mußt du üben, damit du dich selbst (dein Programm) an jeder Stelle prüfen kannst
bestimme_Gewinnzahlen(Gew, zZahl); // wird ausgeführt
zeige_Gew(Gew, zZahl); // wird ausgeführt zeige_Statistik(Rang(Tippzahlen, Gew, zZahl)); // kracht wegen leerem Grid + Tippzahlen falsch |
AW: SpinEdit Fehler: Kein gültiger Integewert
Wie geschrieben, sollte es
Delphi-Quellcode:
lauten
if Tipp_ok(Tippzahlen) then
|
AW: SpinEdit Fehler: Kein gültiger Integewert
und dann wird gleich davon ausgegangen das Tipp_ok(Tippzahlen) true ist?
das ist ja gut, danke. ich üb mich ja schon, ich hab den debugger nur falsche gesetzt, aber du hast recht es liegt an der Statistik Prozedur, wenn ich sie ausklammer läuft das Programm. Weiß jemand was mit der Fehlermeldung dann genau gemeint ist? |
AW: SpinEdit Fehler: Kein gültiger Integewert
ein Leerzeichen bzw. kein Zeichen (weil dein Grid leer ist), was du aus der Zelle holst willst du mit StrToInt umwandeln. Boing... :stupid:
Zitat:
|
AW: SpinEdit Fehler: Kein gültiger Integewert
Zitat:
Zudem ist Wahr nicht eindeutig definiert. Falsch ist 0 und wahr <> 0. So kann es passieren, dass eine c-Funktion -1 zurückliefert ( ist ja <> 0 also wahr) und der Vergleich mit der Konstante True von Delphi ( Wert 1) falsch ergibt, da -1 <> 1 ist |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz