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
Seite 1 von 3  1 23      
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.079 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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

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.079 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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

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

Registriert seit: 27. Nov 2017
2.490 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
NicoleWagner

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

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

  Alt 8. Dez 2021, 15:17
Danke für die weiteren Antworten.
"trim" trifft die Sache nicht, weil sie gesagt, die Eingabefelder explizit mit '' intialisiert werden.

@bernhard_LA

zu Compiler-Fehlermeldungen, die ich persönlich für Bugs aus Delphi XE 3 halte:

z.B.
'string enthält kein Element namens isEmty'

zur Zeile
... MaskEdit_EntryZeit.EditText.IsEmpty...

(Hinweis für jene, die nicht alle Postings lesen wollen: Das Kernproblem ist bereits gelöst, die Lösung steht oben, danke @himitsu!)

@Delphi.Narium
und: Ja, der Hinweis auf Traderfox hat die Sache recht gut erkannt!
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
702 Beiträge
 
Delphi 12 Athens
 
#8

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

  Alt 8. Dez 2021, 19:56

zu Compiler-Fehlermeldungen, die ich persönlich für Bugs aus Delphi XE 3 halte:

z.B.
'string enthält kein Element namens isEmty'

zur Zeile
... MaskEdit_EntryZeit.EditText.IsEmpty...
XE3 hatte noch keine TStringhelper-Klasse, wenn mich mein Vergessnis nicht täuscht...
Peter Below
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.054 Beiträge
 
Delphi 2009 Professional
 
#9

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

  Alt 8. Dez 2021, 22:03
Warum eigentlich TMaskEdit und nicht Delphi-Referenz durchsuchenTDateTimePicker?
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
NicoleWagner

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

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

  Alt 9. Dez 2021, 09:42
@Redeemer, danke für Deine Anregung.
Warum?
Teils aus optischen Gründen. Und teils aus Gründen der Einfachheit. Dieses Feld ist eine Art Notizblock, in das maschinell geschrieben wird und das auch manuell ausgefüllt werde kann. Da ist in diesem Fall ein TEdit kompakter und klarer. Auch optisch, um es von den bereits vorhandenen TDateTimePickern, die ich für andere Zwecke nutze, zu unterscheiden.

Bekomme ich die Compiler-Meldungen irgendwie weg?
Sie bringen nämlich mehrmals am Tag die IDE zum Absturz, dadurch, dass sie einerseits den Arbeitsspeicher massiv zumüllen und andererseits die Programmierhilfe ins Leere greift und die CPU so auslastet, dass ich zum Taksmanager greifen muss. Ich kann da richtig zusehen. Wenn ich merke, sie wird langsam, dann kann ich mit etwas Glück noch schnell meine Arbeit speichern, bevor die Auslastung von 75 auf 99 Prozent hochgeht.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 19:07 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