AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi leer - leer - leer - wie lernt es mein Rechner?
Thema durchsuchen
Ansicht
Themen-Optionen

leer - leer - leer - wie lernt es mein Rechner?

Ein Thema von NicoleWagner · begonnen am 8. Dez 2021 · letzter Beitrag vom 15. Dez 2021
Antwort Antwort
NicoleWagner

Registriert seit: 6. Jul 2010
167 Beiträge
 
Delphi XE3 Professional
 
#1

leer - leer - leer - wie lernt es mein Rechner?

  Alt 8. Dez 2021, 10:18
Es geht darum, dass in einem Text-Feld entweder eine Uhrzeit angegeben wird oder eben keine.
Das Feld ist originär sicher leer, denn ich initialisiere es dezidiert mit ''.
Ist das Feld leer, so will ich die Wertzuweisung "Null" (nicht NULL iSv nil) haben.

Mein Problem ist jetzt, dass ich meinem Rechner nicht beibringen kann, was ein "leeres" Feld ist.
Unten meine Versuche. Diese Bedingungen sind alle drei "true", also der Rechner denkt, der Wert wäre NICHT ungleich Null / 00:00 usw.

Was der Rechner denkt?
Da ist schwierig, doch das Ergebnis ist jedenfalls (ich komme mir vor wie bei Anhalter durch die Galaxis): "12".

So sieht ein Codeschnipsel aus:

if (MaskEdit_ExitZeit.EditText<>'00:00') or (MaskEdit_ExitZeit.EditText<>'00:00:00') or (MaskEdit_ExitZeit.EditText<>'') then
try
dat:=StrToTime(MaskEdit_ExitZeit.EditText); // prüft, ob gültiges Datum
EinTrade_.ExitTime:=dat;
except // nur Zeitanteil aus Datum
EinTrade_.ExitTime:=0;
end;

Meine Frage: Wie bringe ich meinem Rechner bei, was ein leeres Feld ist?! (Delphi XE 3, TMaskEdit).
In der Schleife sind noch logische Fehler, um die geht es nicht. Es geht nur um die Zeile mit dem "if". Sie ist "true", wo sie 3 Gründe hätte, "false" zu sein.

Geändert von NicoleWagner ( 8. Dez 2021 um 10:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: leer - leer - leer - wie lernt es mein Rechner?

  Alt 8. Dez 2021, 10:35
or (Trim(MaskEdit_ExitZeit.EditText)<>'') then

oder mal überlegt/nachgesehn, ob dann nicht eventuell 5 oder 8 Leerzeichen drin sind, wenn es leer ist?
or MaskEdit_ExitZeit.EditText.Trim.IsEmpty then

oder if MatchStr(MaskEdit_ExitZeit.EditText.Trim, ['00:00', '00:00:00', '') then

Und wenn ich solchen Code debuggen sollte, bzw. der mit beim Debuggen über den Weg läuft ... ich würde dich dafür garantiert vierteilen, steinigen und dann dir auch noch den A versohlen.

StrToIrgendwasDef oder TryStrToIrgendwas



Zitat:
// prüft, ob gültiges Datum
Nein, tut es nicht.


Und mal ganz im Ernst ... wenn eh immer 0 rauskommt, sobald Nichts oder Falsches drin steht, dann
Delphi-Quellcode:
dat := StrToTimeDef(MaskEdit_ExitZeit.EditText, 0);
// oder, wenn es nur ums prüfen geht - wenn man sich selber das fehlende IsNullOrWhiteSpace (ohne Parameter) dachgerüstet hat
if not MaskEdit_ExitZeit.EditText.IsNullOrWhiteSpace and TryStrToTime(MaskEdit_ExitZeit.EditText.Trim, Dummy) then
// bzw.
if not MaskEdit_ExitZeit.EditText.Trim.IsEmpty and TryStrToTime(MaskEdit_ExitZeit.EditText.Trim, Dummy) then
//
if (Trim(MaskEdit_ExitZeit.EditText) <> '') and TryStrToTime(Trim(MaskEdit_ExitZeit.EditText), Dummy) then
// ...



So lange es sich nicht um spezielle Fachbegriffe handelt, würde ich aus ästhetischen Gründen von Denglisch abraten.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 8. Dez 2021 um 10:41 Uhr)
  Mit Zitat antworten Zitat
NicoleWagner

Registriert seit: 6. Jul 2010
167 Beiträge
 
Delphi XE3 Professional
 
#3

AW: leer - leer - leer - wie lernt es mein Rechner?

  Alt 8. Dez 2021, 11:02
Ganz lieben Dank!

So sieht das jetzt bei mir aus:

if MaskEdit_EntryZeit.EditText.IsEmpty
then EinTrade_.EntryTime:=0
else StrToTimeDef(MaskEdit_EntryZeit.EditText, 0);

Dass mein Compiler "MaskEdit_EntryZeit.EditText.IsEmpty" mit zig Fehlermeldungen bedenkt, wäre da nächste Rätsel. Doch egal, er compiliert und es tut, was es soll.

Und ja, das englische Gestammel ist deshalb, weil es Fachtermini sind, die zu übersetzen noch verwirrender wäre, als Denglisch zu stammeln.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: leer - leer - leer - wie lernt es mein Rechner?

  Alt 8. Dez 2021, 12:19
https://docwiki.embarcadero.com/Libr...Helper_Methods
aber daher auch noch die Varianten mit Trim() und <>



Ja, wir haben hier auch zuviel davon, aber "Zeit" hätte ich jetzt nicht als Fachbegriff eingestuft
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 8. Dez 2021 um 12:21 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.554 Beiträge
 
Delphi 7 Professional
 
#5

AW: leer - leer - leer - wie lernt es mein Rechner?

  Alt 8. Dez 2021, 12:37
Zeit sind ja auch nur die zweiten 50% des Fachbegriffes.

ExitZeit ist der Fachbegriff, ebenso wie z. B. EntryZeit.

https://ninjacademy.traderfox.de/han...ategie/id-2128
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: leer - leer - leer - wie lernt es mein Rechner?

  Alt 8. Dez 2021, 13:12
einfachmal die Fehlermeldungen des Compilers ausschneiden und hier posten, dann kann man ggf. mehr dazu sagen
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.164 Beiträge
 
Delphi 12 Athens
 
#7

AW: leer - leer - leer - wie lernt es mein Rechner?

  Alt 15. Dez 2021, 07:46
Delphi-Quellcode:
dat := StrToTimeDef(MaskEdit_ExitZeit.EditText, 0);
// oder, wenn es nur ums prüfen geht - wenn man sich selber das fehlende IsNullOrWhiteSpace (ohne Parameter) dachgerüstet hat
if not MaskEdit_ExitZeit.EditText.IsNullOrWhiteSpace and TryStrToTime(MaskEdit_ExitZeit.EditText.Trim, Dummy) then
Hallo himitsu,
was für einen Vorteil hätte ein IsNullOrWhiteSpace() vor einem TryStrToTime( Trim() ) ?
Ist das nicht doppelt gemoppelt, oder hat TryStrToTime irgendeinen Bug den ich nicht kenne ?
Mir reicht in der Regel Letzteres aus.

Ok, im Problemfall gibt es eventuell leichte Performance-Vorteile,
was aber doch bei User-Eingaben sowieso relativ unkritisch ist.
  Mit Zitat antworten Zitat
NicoleWagner

Registriert seit: 6. Jul 2010
167 Beiträge
 
Delphi XE3 Professional
 
#8

AW: leer - leer - leer - wie lernt es mein Rechner?

  Alt 15. Dez 2021, 16:12
@haentmschman
Danke für die Grafiken.

Bei mir gibt es Probleme, doch nicht nur auf dieser Oberfläche. Ich verdächtige eines meiner Add-Ons, weiß aber leider noch nicht welches, weil es so viele sind.

Nicole
*auf der Jagd nach dem Übeltäter*
  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 02:36 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 by Thomas Breitkreuz