Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - String-Formatierung
D. Annies - Fr 23.08.13 08:07
Titel: String-Formatierung
Hi, Delpher,
warum gibt es zur Laufzeit hier eine Fehlermeldung?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| if T_SL.FieldByName('gebdat').DataType = ftString then begin Q_SL.SQL.Text := Format('select Ident_Nr, Name, Vorname, Klasse, Geschlecht, Gebdat, Telefon from "%s" ' + 'where gebdat like "%s" ' + 'order by Klasse, Name, Vorname', [TbName, TgMos]); showmessage(Q_SL.SQL.Text); Q_SL.Open; praefix := format('%.02d', [TgMos]) + '_'; <--- an dieser Stelle. TgMos ist String end; |
Die Fehlermeldung lautet: EConvertError Format '%02d' ungültig oder nicht kompatibel mit Argument
Danke für Hilfe,
Detlef
WasWeißDennIch - Fr 23.08.13 08:20
Die Antwort hast Du ja selbst gegeben: TgMos ist ein String, für %d brauchst Du aber eine ganze Zahl. Sollte TgMos eine solche darstellen, musst Du sie zuerst umwandeln.
Delphi-Quelltext
1:
| praefix := format('%.02d_', [StrToInt(TgMos)]); |
D. Annies - Fr 23.08.13 08:50
Danke, schon besser,
aber die Fehlermeldung ist noch da.
Ich versuche ja, z.B. den String 23.08. umzuwandeln und da hakt es noch.
Kannst du noch einmal weiter helfen?
LG, Detlef
Gammatester - Fr 23.08.13 08:59
D. Annies hat folgendes geschrieben : |
Ich versuche ja, z.B. den String 23.08. umzuwandeln |
Was ist das? Ein Datum? Wenn es 23.08 wäre, ist eh StrToInt völlig ungeeignet. Nimm StrToFloat (aber dann kannst Du eigentlich gleich FormatFloat benutzen). Wenn der Punkt hinter der 8
kein Zufall/Artefakt ist, wirst Du auch dann wahrscheinlich Probleme haben.
D. Annies - Fr 23.08.13 11:57
Hi,
ich will den Geburtstag einer Person erkennen können, also unabhängig vom Jahr.
Bisher hatte ich natürlich auch den Datentyp Date dafür vorgesehen. Aber meine
Schule hat mal wieder "professionell" [ha, ha] rumgebastelt und deshalb entstand
mein heutiges String-Problem.
LG, Detlef
jasocul - Fr 23.08.13 12:51
Meintest du vielleicht sowas?
Delphi-Quelltext
1: 2: 3:
| DecimalSeparator := '.'; TgMos := '23.08'; praefix := format('%2.2f', [StrToFloat(TgMos)]); |
Ist nur ein Code-Fragment. Du solltest natürlich hinterher den DecimalSeparator wieder auf den richtigen Wert setzen.
D. Annies - Fr 23.08.13 14:44
Hi, Delpher,
einmal festhalten: ich habe jetzt geprüft, wo die Variable praefix im Prg vorkommt: nur in dieser
Prozedur! Ich habe sie gelöscht und gut war's. :oops:
So kann's gehen. Danke (mal wieder) für eure Mühe
Detlef
WasWeißDennIch - Fr 23.08.13 14:47
D. Annies hat folgendes geschrieben : |
ich will den Geburtstag einer Person erkennen können, also unabhängig vom Jahr. |
Je nach DBMS könnte man dazu aber dessen Funktionen nutzen, in Pseudo-SQL etwa so:
SQL-Anweisung
1: 2: 3: 4: 5: 6: 7: 8:
| SELECT FeldListe FROM Tabelle WHERE MONTH(GebDatum) = CURRENT_MONTH AND DAY(GebDatum) = CURRENT_DAY |
Ob es die Funktionen gibt und wie sie ggf. heißen, hängt aber wie gesagt von der verwendeten Datenbank ab.
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!