AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi prüfen, ob string Datum enthält (ohne Fehler) , D5
Thema durchsuchen
Ansicht
Themen-Optionen

prüfen, ob string Datum enthält (ohne Fehler) , D5

Ein Thema von Oldy · begonnen am 5. Sep 2009 · letzter Beitrag vom 5. Sep 2009
Antwort Antwort
Oldy

Registriert seit: 12. Dez 2008
135 Beiträge
 
Delphi 7 Enterprise
 
#1

prüfen, ob string Datum enthält (ohne Fehler) , D5

  Alt 5. Sep 2009, 14:05
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).
for i:=1 to advcolumngrid1.rows.count -1 do begin .... end; Wenn .GridCells[0,i] kein Datum enthält, soll die gesamte Zeile gelöscht werden.
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
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#2

Re: prüfen, ob string Datum enthält (ohne Fehler) , D5

  Alt 5. Sep 2009, 14:09
Zitat von Oldy:
Denn wenn ich strtodate mache und kein Datum drinnen is, bekopmme ich zwangsweise eine Fehlermeldung..
Code:
try
  StrToDate()
except
  ...
  Mit Zitat antworten Zitat
Oldy

Registriert seit: 12. Dez 2008
135 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: prüfen, ob string Datum enthält (ohne Fehler) , D5

  Alt 5. Sep 2009, 14:13

stimmt ja.. try gibts ja auch noch

danke
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

Re: prüfen, ob string Datum enthält (ohne Fehler) , D5

  Alt 5. Sep 2009, 14:16
oder mit
StrToDateDef( <StringWert>, <DefaultDatum> ) dann sparst du dir den try ... except Block, der ja die Performance bremst.
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]
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Oldy

Registriert seit: 12. Dez 2008
135 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: prüfen, ob string Datum enthält (ohne Fehler) , D5

  Alt 5. Sep 2009, 14:24
Zitat von Sir Rufo:
ich weiß aber nicht, ob es den Befehl schon unter Delphi 5 gibt
nbe leider nich..

im Try block: wie kann ich das in ne if-abfrage machen?
wenn ich if strtodate(s) = true then begin .. end; mache, kommt nur "inkompatible Typen"
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

Re: prüfen, ob string Datum enthält (ohne Fehler) , D5

  Alt 5. Sep 2009, 14:29
ä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;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Oldy

Registriert seit: 12. Dez 2008
135 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: prüfen, ob string Datum enthält (ohne Fehler) , D5

  Alt 5. Sep 2009, 14:35
Zitat von Sir Rufo:
ä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;
vielen dank

ich hab nur nen bool reingemacht weil Delphi egsagt hat "Ausdruckstyp muss Boolean sein" ...
komisch
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.163 Beiträge
 
Delphi 12 Athens
 
#8

Re: prüfen, ob string Datum enthält (ohne Fehler) , D5

  Alt 5. Sep 2009, 14:40
eine leere Exceptionbehandlungist keine Behandlung!

wenn schon, dann so:
Delphi-Quellcode:
try
  Datum := StrToDate( Wert );
except
  ZeileLoeschen;
end;
und wenn dich das Datum selbst nicht interessiert, sondern nur ob es eines ist, dann kann man Datum:= auch weglassen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

Re: prüfen, ob string Datum enthält (ohne Fehler) , D5

  Alt 5. Sep 2009, 15:01
Zitat von himitsu:
eine leere Exceptionbehandlungist keine Behandlung!

wenn schon, dann so:
Delphi-Quellcode:
try
  Datum := StrToDate( Wert );
except
  ZeileLoeschen;
end;
und wenn dich das Datum selbst nicht interessiert, sondern nur ob es eines ist, dann kann man Datum:= auch weglassen
nur würde ich in einem except-teil keinen code ausführen der wiederum eine exception werfen könnte, aber das ist wohl Geschmacksache
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.163 Beiträge
 
Delphi 12 Athens
 
#10

Re: prüfen, ob string Datum enthält (ohne Fehler) , D5

  Alt 5. Sep 2009, 15:20
Delphi-Quellcode:
Try
  // mach was
Except
  // tu irgendwas
  Raise; // reiche die Exception weiter
End;
genau dafür ist Raise ohne Parameter gedacht

Delphi-Quellcode:
Try
  // mach was
Except
  On E: Exception do
    Raise TMyExteption.Create('Fehler in xyz aufgetreten'#13#10 + E.Message);
End;
halt die Nachricht erweitern und eventuell an die Klasse anpassen

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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz