![]() |
prüfen, ob string Datum enthält (ohne Fehler) , D5
Hallo Leute :)
Ich habe eine Stringgrid, genauer gesagt ADVColumnGrid von den TMS´. Nun, ich habe ine Prozedur, die mir aus 5 TStrings, die ich aus dem Internet fülle, jeweils 5 Spalten füllt. Nun möchte ich jede Zeile durchgehen (Schleife).
Delphi-Quellcode:
Wenn .GridCells[0,i] kein Datum enthält, soll die gesamte Zeile gelöscht werden.
for i:=1 to advcolumngrid1.rows.count -1 do begin .... end;
wie kann ich jedoch prüfen, ob ein string ein Datum ist? Denn wenn ich strtodate mache und kein Datum drinnen is, bekopmme ich zwangsweise eine Fehlermeldung.. Vielen Danks chonmal Mfg Oldy |
Re: prüfen, ob string Datum enthält (ohne Fehler) , D5
Zitat:
Code:
:?: :wink:
try
StrToDate() except ... |
Re: prüfen, ob string Datum enthält (ohne Fehler) , D5
:wall:
stimmt ja.. try gibts ja auch noch :wall: :wall: :wall: danke :D |
Re: prüfen, ob string Datum enthält (ohne Fehler) , D5
oder mit
Delphi-Quellcode:
dann sparst du dir den try ... except Block, der ja die Performance bremst.
StrToDateDef( <StringWert>, <DefaultDatum> )
Ist das Ergebnis gleich dem Default-Wert, dann war das kein Datum (Default-Wert am besten auf 0 setzen) cu Oliver [edit]ich weiß aber nicht, ob es den Befehl schon unter Delphi 5 gibt[/edit] |
Re: prüfen, ob string Datum enthält (ohne Fehler) , D5
Zitat:
im Try block: wie kann ich das in ne if-abfrage machen? wenn ich
Delphi-Quellcode:
mache, kommt nur "inkompatible Typen" :(
if strtodate(s) = true then begin .. end;
|
Re: prüfen, ob string Datum enthält (ohne Fehler) , D5
äh, StrToDate wandelt einen Wert vom Typ String in einen Wert vom Typ Date um (darum StrToDate)
Und der Typ Date ist natürlich mit dem Typ Boolean nicht verträglich! So geht es:
Delphi-Quellcode:
Datum := 0;
try Datum := StrToDate( Wert ); except end; if Datum = 0 then ZeileLoeschen; |
Re: prüfen, ob string Datum enthält (ohne Fehler) , D5
Zitat:
ich hab nur nen bool reingemacht weil Delphi egsagt hat "Ausdruckstyp muss Boolean sein" ... komisch |
Re: prüfen, ob string Datum enthält (ohne Fehler) , D5
eine leere Exceptionbehandlungist keine Behandlung!
wenn schon, dann so:
Delphi-Quellcode:
und wenn dich das Datum selbst nicht interessiert, sondern nur ob es eines ist, dann kann man Datum:= auch weglassen
try
Datum := StrToDate( Wert ); except ZeileLoeschen; end; |
Re: prüfen, ob string Datum enthält (ohne Fehler) , D5
Zitat:
|
Re: prüfen, ob string Datum enthält (ohne Fehler) , D5
Delphi-Quellcode:
genau dafür ist Raise ohne Parameter gedacht
Try
// mach was Except // tu irgendwas Raise; // reiche die Exception weiter End;
Delphi-Quellcode:
halt die Nachricht erweitern und eventuell an die Klasse anpassen
Try
// mach was Except On E: Exception do Raise TMyExteption.Create('Fehler in xyz aufgetreten'#13#10 + E.Message); End; z.B. in himXML fange ich fast keine Exceptions ab, sondern leite sie in meine Exceptionklasse um, damit der User dann extern gezielt auf Exceptions aus meinen Klassen reagieren kann. Und erweitere die Nachricht um ein paar Zusatzinfos. Wie gesagt, solange man den Grund für die Exception nicht gezielt alternativ behandelt hat und es absolut keinen Grund mehr gibt, daß diese Meldung noch jemanden interessiert, sollte man sie auch weiter durchreichen und nicht einfach verschlucken. Immerhin gab es ja einen Grund für diese Exception und das ist im Normalfall nicht unwichtig. Exception = schwerwiegende Ausnahmesituation und das besagt doch, daß man sie nicht leichtsinniger Weise ignorieren/umgehen/ausnutzen sollte |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15: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