Autor Beitrag
D. Annies
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Fr 23.08.13 08:07 
Hi, Delpher,

warum gibt es zur Laufzeit hier eine Fehlermeldung?

ausblenden 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

_________________
ut vires desint, tamen est laudanda voluntas
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: 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.
ausblenden Delphi-Quelltext
1:
praefix := format('%.02d_', [StrToInt(TgMos)]);					

Für diesen Beitrag haben gedankt: D. Annies
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: 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

_________________
ut vires desint, tamen est laudanda voluntas
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: Fr 23.08.13 08:55 
Du hast da ein Datum ohne Jahresangabe, wenn ich das richtig sehe. Was soll denn am Ende herauskommen? Suchst Du evtl. eher FormatDateTime?
Gammatester
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 328
Erhaltene Danke: 101



BeitragVerfasst: Fr 23.08.13 08:59 
user profile iconD. Annies hat folgendes geschrieben Zum zitierten Posting springen:
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.

Für diesen Beitrag haben gedankt: D. Annies
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19325
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 23.08.13 09:49 
user profile iconD. Annies hat folgendes geschrieben Zum zitierten Posting springen:
Ich versuche ja, z.B. den String 23.08. umzuwandeln und da hakt es noch.
Worin denn umzuwandeln? In einen Integerwert? Suchst du vielleicht DayOf?
docwiki.embarcadero....stem.DateUtils.DayOf

Und woher kommt der String eigentlich? Wenn du es wie user profile iconWasWeißDennIch meinte als String brauchst, kannst du das nicht gleich so formatieren?

Für diesen Beitrag haben gedankt: D. Annies
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: 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

_________________
ut vires desint, tamen est laudanda voluntas
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Fr 23.08.13 12:51 
Meintest du vielleicht sowas?
ausblenden Delphi-Quelltext
1:
2:
3:
  DecimalSeparator := '.'// Sonst bekommst du als Ergebnis ein Komma
  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.

Für diesen Beitrag haben gedankt: D. Annies
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: 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

_________________
ut vires desint, tamen est laudanda voluntas
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: Fr 23.08.13 14:47 
user profile iconD. Annies hat folgendes geschrieben Zum zitierten Posting springen:
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:
ausblenden 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.

Für diesen Beitrag haben gedankt: D. Annies