Autor Beitrag
Flonkon
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Do 06.10.11 17:57 
Hallo ihr da ich bin auf euer Forum gestoßen weil ich an einem Problem verzweifle ...
Hoffe das ihr mir helfen könnt...
Und zwar bin ich seit kurzem Wiedereinsteiger mit Delphi, hab eine ganze Zeit lange mit Delphi gearbeitet und dann wieder über 1 Jahr gar nicht...
jetzt wollte ich mal wieder anfangen und wollte mir einen ganz einfachen Stundenrechner für meine Arbeitszeiten basteln, das ganze im Zusammenhang mit
einer MySql Datenbank, hat soweit schon alles super geklappt, Datenbank erstellt, mit Delphi geöffnet ausgelesen, schreiben etc funktioniert problemlos
so wie ich es in Erinnerung habe.
Mein jetztiges Problem ist folgendes, ich bin mir aller Variablentypen nicht mehr sicher, in meiner Datenbank habe ich die Arbeitsstunden in Float gesichert,
lese Sie in Delphi in Real aus und schreibe sie als String in Textfelder, ich bekomme es aber nicht hin diese Daten wieder rauszuholen und
dann die Arbeitsstunden mal den Stundenlohn zu rechnen, ich probiere sie aus dem String zu holen und mit strtofloat dann wieder in die Real Variable zu bringen,
aber Delphi sagt mir das meine Zahl (in meinem Fall 6,5) not a valid float ... ist ... hier mal der Ausschnitt von meinem Code:


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
var s:string;
hl2:string;
hl3:string;
hl5:real;
i:integer;
hrs:real;
hl:real;
hl4:longint;

label1.Caption:=FloatTostr(hrs);
hl3:=label3.caption;
hl4:=strtoint(hl3);
hrs:=hrs*hl4;

label5.caption:=floattostr(hr s)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19338
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 06.10.11 18:07 
Hallo und :welcome:

Der Fehler kommt eher bei StrToFloat. :gruebel:
In welcher Zeile genau tritt der Fehler denn auf?

Nebenbei:
Real sollte besser nicht verwendet werden, nimm besser Double...
Flonkon Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Do 06.10.11 18:26 
Hab das ganze jetzt wieder anders versucht und aufgebaut und es sieht jetzt folgendermaßen aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
var 
    i:integer;
    s:string;
    hl2:string;
    hl3:double;
    hl5:double;
    hrs:double;
    hl:double;
    hl4:double;



hl3:=strtofloat(label1.caption);
hl4:=strtofloat(label3.caption);
hl5:=hl3*hl4;

label5.caption:=floattostr(hl5);


Bekomme nun den gleichen Fehler ind Zeile 13 also bei:

ausblenden Delphi-Quelltext
1:
hl3:=strtofloat(label1.caption);					



Ich arbeite übrigens noch mit Delphi 6 falls das irgendwas ausmacht...
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Do 06.10.11 18:38 
Wie sieht denn die Beschriftung des Labels aus, also z.B. "2,3" oder "2.3"?

Edit: Im Falle von "2.3" müsste dann zur Laufzeit eine Fehlermeldung kommen, dass "2.3" kein gültiger Gleitkommawert ist. ;)

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
HenryHux
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Do 06.10.11 18:56 
Hi

Das Problem ist, dass du nach der Variablendeklaration das begin vergessen hast.

lg
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Do 06.10.11 19:01 
Dann würde aber Delphi doch eine andere Fehlermeldung werfen oder? :gruebel:

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
Flonkon Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Do 06.10.11 19:11 
Das sind nur Ausschnitte aus meinem Code, der gesamte sieht anders aus, ich kopier ihn hier mal rein:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
procedure TfrmMain.Button2Click(Sender: TObject);
var s:string;
    hl2:string;
    hl3:double;
    hl5:double;
    i:integer;
    hrs:double;
    hl:double;
    hl4:double;

begin
db.ListTables();
listbox2.items:= db.GetResultAsStrings;

if wrapquery (db,'SELECT Datum FROM tbl_datum'then
listbox5.items:=db.GetResultAsStrings;

if wrapquery(db,'SELECT Uhrzeit FROM tbl_uhrzeit'then
listbox6.Items:=db.GetResultAsStrings;

if wrapquery(db,'SELECT Zeit FROM tbl_zeit'then
listbox7.Items:=db.GetResultAsStrings;

if wrapquery(db,'SELECT Titel FROM arbeitgeber'then
s:=db.GetResultAsText;
label7.Caption:=s;

if wrapquery(db,'SELECT stundenlohn FROM lohn'then
s:=db.getresultastext;
s:=StringReplace(s,'.' , ',' ,[rfReplaceAll, rfIgnoreCase]);
edit1.Text:=s;
label3.Caption:=s;

For i:=0 to listbox7.Count-1 do begin

        hl2:=listbox7.Items[i];
        hl2:=StringReplace(hl2,'.' , ',' ,[rfReplaceAll, rfIgnoreCase]);
        hl:=strtofloat(hl2);
        hrs:=hrs+hl;

end;

label1.Caption:=FloatTostr(hrs);

hl3:=strtofloat(label1.caption);
hl4:=strtofloat(label3.caption);
hl5:=hl3*hl4;

label5.caption:=floattostr(hl5);



end;


So siehts insgesamt aus ich habe also vorher alle Punkte in meiner Zahl durch Kommas ersetzt und es klappt trotz allem nicht...
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Do 06.10.11 19:24 
Was mir noch auffällt ist, dass du die Variable hrs nicht initialisiert hast.
Weißt du eigentlich, wofür deine Abkürzungen stehen? hrs, hl ist ein Double, hl2 dagegen ein String. Für mich ist die Bennenung sehr verwirrend. :gruebel:
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Do 06.10.11 19:32 
user profile iconFlonkon hat folgendes geschrieben Zum zitierten Posting springen:

So siehts insgesamt aus ich habe also vorher alle Punkte in meiner Zahl durch Kommas ersetzt und es klappt trotz allem nicht...


Ich kann den Fehler nicht nachvollziehen, bei mir funktioniert folgender Code einwandfrei:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Button1Click(Sender: TObject);
var
  test : double;
begin
  test := StrToFloat(edit1.Text);
end;

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
Flonkon Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Do 06.10.11 19:56 
@Marc
Ja ich muss da mal aufräumen das stimmt wohl bin selber etwas durcheinander gekommen teilweise mit den Variablen, damit hat ich schon immer Probleme

@Dude566
Funktioniert das denn auch wenn du es aus nem label nimmst und nicht aus nem edit ?
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Do 06.10.11 20:16 
user profile iconFlonkon hat folgendes geschrieben Zum zitierten Posting springen:

@Dude566
Funktioniert das denn auch wenn du es aus nem label nimmst und nicht aus nem edit ?


Ja funktioniert es.

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Do 06.10.11 20:20 
user profile iconFlonkon hat folgendes geschrieben Zum zitierten Posting springen:
Funktioniert das denn auch wenn du es aus nem label nimmst und nicht aus nem edit ?

Unter Delphi2009 ja, sofern ich als Trennzeichen das Komma statt dem Punkt verwende. Aber das ist Systemeinstellung. ;)
Befindet sich in deiner Caption vielleicht noch ein Leerzeichen oder sonstige Steuerzeichen, wie #13#10?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19338
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 06.10.11 20:25 
Da die Variable nicht initialisiert ist, ist es schlicht Zufall was in dem Label ankommt. Gib den Inhalt doch einfach einmal in der Zeile vor dem Fehler mit
ausblenden Delphi-Quelltext
1:
ShowMessage('"' + label1.caption + '"');					
aus. Dann siehst du ja was drin ist.


Zuletzt bearbeitet von jaenicke am Do 06.10.11 20:29, insgesamt 1-mal bearbeitet
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Do 06.10.11 20:27 
So wie ich ihn verstanden habe, hat er das Label ja wohl mit "6,5" beschriftet und so funktioniert es auch bei mir, wieso auch nicht. :lol:

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
Flonkon Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Do 06.10.11 20:39 
In dem Label stehen genau die 6,5 also der Stundenlohn, ich versteh auch nicht woher das kommen kann wenn ich das in nem anderen Programm ausprobiere, dann klappt es auch ich weiß nicht woran das liegen könnte...
HenryHux
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Do 06.10.11 21:38 
Du könntest doch einmal das komplette Projekt hochladen, würde es einfacher für uns machen.
Chemiker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 194
Erhaltene Danke: 14

XP, Vista 32 Bit, Vista 64 Bit, Win 7 64 Bit, Win 10, Win 11
BDS 2006, RAD Studio 2009+C++, Delphi 13, VS 2010 Prof.
BeitragVerfasst: Do 06.10.11 22:11 
Hallo,

jaenicke hat folgendes geschrieben:
Real sollte besser nicht verwendet werden, nimm besser Double

Das ist eigentlich egal, weil real double entspricht. Was man nicht mehr verwenden sollte ist real48, dieser Datentyp ist veraltet.

Bis bald Chemiker
Flonkon Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 07.10.11 06:13 
Ich hab euch hier mal das komplette Projekt hochgeladen, ich möchte bitte keine Anspielungen zur formatierung meines Source hören,
ich weiß das es absolut unübersichtlich und schlecht ist... aber bis jetzt hat es funktioniert :-)
Ich benutze wie gesagt Delphi 6 und Xampp, ihr müsst also die "stundenplaner.sql" bei Xampp einfügen sonst klappt das ganze nicht ...
und falls ihr bei Xampp anderen Benutzernamen und Passwort habt dies auch im Programm ändern...

Versucht mal euer Glück...

www.mediafire.com/?x9q7i6w7c8qh97o
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19338
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 07.10.11 06:30 
Mal eine ganz andere Frage:
Benutzt du zufällig Windows 7?

Wenn ja, stell doch einfach mal in den Regions- und Spracheinstellungen die Formateinstellung auf eine andere Sprache, übernehme und stell sie zurück auf Deutschland. Da gibt es nämlich auf einigen PCs (offenbar nur / vor allem vorkonfiguriert ausgelieferte) falsche Einstellungen. ;-)

Wegen dem Downloadlink:
Häng die Datei doch bitte einfach im Forum an, das wäre sinnvoller...
Flonkon Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 07.10.11 08:53 
Windows 7 habe ich habs ausprobiert aber es klappt leider auch nicht mit den Regions und Spracheinstellungen

hier nochmal die Datei....

Moderiert von user profile iconNarses: Inline- in normalen Anhang gewandelt, Binaries aus dem Archiv entfernt.
Einloggen, um Attachments anzusehen!