![]() |
nimmt meine zahlen nicht im stringgrid trotz strtoint
warum bekomme ich die fehlermeldung?
"ist kein gültiger integerwert"
Delphi-Quellcode:
var a,b,c,d:integer;
procedure TForm2.Button1Click(Sender: TObject); begin try a := StrToInt(StringGrid1.Cells[0,1]) ; b := StrToInt(StringGrid1.Cells[0,2]) ; c := StrToInt(StringGrid1.Cells[0,3]) ; d := StrToInt(StringGrid1.Cells[0,4]) ; except on EConvertError do showmessage ('Ungültige Eingabe'); end; |
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
Moin, Moin.
Zunächst einmal ALLEN ein GUTEN NEUES JAHR 2009! zur Frage: Was steht in den Zellen? Alles Zahlen? Sind vielleicht "unsichtbare" Blanks enthalten? |
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
Die Zelle scheint leer zu sein, doch durch try-except sollte so ein Fehler abgefangen werden.
Vielleicht weil in deinen Delphi-Optionen "Bei Sprach-Exceptions stoppen" aktiviert ist. Starte die Anwendung mal aus dem Windows-Explorer heraus und schaue, ob die Meldung dann auch erscheint. Wenn nicht, liegt es an der genannten Einstellung. |
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
alles zahlen und wenn ich die .exe starte schreibt er die ungültige eingabe!
|
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
die einstellung "Bei Sprach-Exceptions stoppen" finde ich leider nicht.
wo genau ist diese? |
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
Bei den Debugger-Optionen - genauer geht's nur wenn wir deine Delphi-Version wissen.
|
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
Hallo Molzer,
hast du vielleicht Zeilen und Spalten vertauscht? Dein Code erwartet die Daten in der ersten Spalte. Gruß Hawkeye |
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
Borland® Delphi® für Microsoft® Windows™ Version 10.0.2288.42451 Update 2 Copyright © 2005 Borland®
Software Corporation. Alle Rechte vorbehalten. |
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
Benutze doch zu Testzwecken mal ein
Delphi-Quellcode:
Und das für alle Zellen, die du ausliest. Dann siehst du zumindest, ob in den Zellen, die du ausliest, wirklich nur eine Zahl steht.
ShowMessage('"' + StringGrid1.Cells[0,1] + '"');
|
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
zeilen und spalten habe ich nicht vertauscht!
|
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
er gibt mir nur die "" aus
:wall: |
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
Zitat:
Tools -> Optionen -> Debugger-Optionen -> CodeGear Debugger -> Sprach-Exceptions -> Bei Sprach-Exceptions benachrichtigen |
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
Hallo,
hast du auch die richtige Zeile ausgewählt? |
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
Zitat:
Seltsam... |
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
nein das "bei sprachexc..." ist nicht dabei!
|
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
mach mal bitte einen screenshot deiner stringgrid
|
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
Liste der Anhänge anzeigen (Anzahl: 1)
so schauts aus!
|
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
Die obere linke Zelle hat den Index 0,0 und nicht 0,1. Das wird vermutlich der Fehler sein. ;-)
|
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
Jooo,
du adressierst mit Cells[Col,Row], also Col hochzählen, nicht die Zeilen! |
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
also doch vertauscht! :wall:
dankeschön! |
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
Es müsste dann so heissen:
Delphi-Quellcode:
oder um das Except wegzubekommen:
var a,b,c,d:integer;
procedure TForm2.Button1Click(Sender: TObject); begin try a := StrToInt(StringGrid1.Cells[0, 0]) ; b := StrToInt(StringGrid1.Cells[1, 0]) ; c := StrToInt(StringGrid1.Cells[2, 0]) ; d := StrToInt(StringGrid1.Cells[3, 0]) ; except on EConvertError do showmessage ('Ungültige Eingabe'); end;
Delphi-Quellcode:
So wird bei einem Fehler (keine Zahl eingegeben in der StringGrid-Zelle) -1 als Defaultwert zurückgegeben.
var a,b,c,d:integer;
procedure TForm2.Button1Click(Sender: TObject); begin a := StrToIntDef(StringGrid1.Cells[0, 0], -1) ; b := StrToIntDef(StringGrid1.Cells[1, 0], -1) ; c := StrToIntDef(StringGrid1.Cells[2, 0], -1) ; d := StrToIntDef(StringGrid1.Cells[3, 0], -1) ; If (a = -1) or (b = -1) or (c = -1) or (d = -1) then ShowMessage ('Ungültige Eingabe'); end; Wenn ein Feld -1 beinhaltet, dann kommt die Meldung. (Da geht natürlich nur, wenn die erlaubte Eingabe > -1 ist, also ab 0 positiv werdend... |
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
yep!
Danke Dir! |
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
Zitat:
Delphi-Quellcode:
(So wärst unabhängig von der Eingabe - aber auf die Eingabe von Nicht-Zahlen wird trotzdem geprüft...)
var a,b,c,d:integer;
procedure TForm2.Button1Click(Sender: TObject); begin If not TryStrToInt(StringGrid1.Cells[0, 0], a) or not TryStrToInt(StringGrid1.Cells[1, 0], b) or not TryStrToInt(StringGrid1.Cells[2, 0], c) or not TryStrToInt(StringGrid1.Cells[3, 0], d) then ShowMessage ('Ungültige Eingabe'); end; |
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
da wir jetzt beim Optimieren angekommen sind:
Eine Schleife (und ein Integer-Array) wären in diesem Fall wohl schon überlegenswert... |
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
@Helmi: TryStrToInt liefert im Erfolgsfall den Wert True!
Gruß Hawkeye |
Re: nimmt meine zahlen nicht im stringgrid trotz strtoint
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:45 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