AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Seltsames Memo LoadFomFile inculde Phänomen

Ein Thema von Ajintaro · begonnen am 2. Okt 2014 · letzter Beitrag vom 3. Okt 2014
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Seltsames Memo LoadFomFile inculde Phänomen

  Alt 3. Okt 2014, 01:33
Nur mal so am Rande

Was möchtest du mit
Delphi-Quellcode:
try
  ...
except
  on E: Exception do
    Showmessage(E.message);
end;
erreichen?

Soll bei einer Exception ein Dialog mit der Fehlermeldung erscheinen?
Dann entferne diesen try .. except Block, denn die Anwendung macht das von ganz alleine!

Was du jetzt hast ist eine Funktion, die bei einer Exception die Exception-Message ausgibt (der Exception-Typ fällt unter den Tisch) und dann irgendeinen nicht kontrollierbaren Rückgabewert an den Aufrufer zurückliefert.

Wenn du Pech hast, dann siehst du diese Fehlermeldung und direkt danach die Meldung "Hurra".

Wem soll das denn nun etwas sagen?

Irgendwie gibt deine Funktion egal wie nur gesichert ein True heraus, ein False wird nie explizit gesetzt. Wahrscheinlich musst du deswegen auch den Rückgabewert auf True prüfen, sonst siehst du sehr selten Hurra.
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
44.349 Beiträge
 
Delphi 12 Athens
 
#2

AW: Seltsames Memo LoadFomFile inculde Phänomen

  Alt 3. Okt 2014, 02:13
Noch besser, wenn vorher der Code abgebrochen ist, das AddParseError aufrief und der Fehlercode zufällig 0 ist, dann gibt die Funktion auch True zurück, obwohl garnicht alles abgearbeitet wurde.
Und AddParseError fügt nichts irgendwo hinzu, sondern gibt nur eine Fehlermelung aus, also eher ein ShowParseError.

Irgendwie gibt deine Funktion egal wie nur gesichert ein True heraus, ein False wird nie explizit gesetzt.
Ein guter beweis, daß sich niemand die Compilermeldungen ansieht und auf das hört, was man ihm dort sagt.

Zitat:
sonst siehst du sehr selten Hurra.
Eher andersrum, er bekommt zu 99,3% ein False fehlerhaft als True (<>0) geliefert
und zu 0,4% wird ein "False" genau das True (=1) ergeben.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 3. Okt 2014 um 02:17 Uhr)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#3

AW: Seltsames Memo LoadFomFile inculde Phänomen

  Alt 3. Okt 2014, 07:40
Ein guter beweis, daß sich niemand die Compilermeldungen ansieht und auf das hört, was man ihm dort sagt.
Und das ist der Beweis, das viele Programmierer wirklich glauben, das NOT Alle = Niemand ist. Einer liest sie nicht und Du folgst daraus 'niemand'. Tss Tss Tss. Richtig wäre der Satz: 'Ein guter Beweis, das nicht Alle die Compilermeldungen anschauen' was wiederum banal ist, denn wenn eins im Leben immer gilt, dann, das es kein 'alle' und kein 'immer' gibt.(*)

Wollen wir das mit dem 'beweisen' vielleicht nochmal üben? Und gleich danach, oder besser davor noch, Grundlagen der Logik?

(*) Und der, der mich jetzt auf den Widerspruch hinweist und dabei den Witz nicht kapiert, kriecht'n Keks.

Was aber natürlich stimmt, ist, das man die Warnhinweise des Compilers ernst nehmen und (fast) alles daran setzen sollte, diese auf 0 zu bekommen ohne sie auszuschalten.

PS: Und 'ja', mir ist langweilig
  Mit Zitat antworten Zitat
Sailor

Registriert seit: 20. Jul 2008
Ort: Balaton
112 Beiträge
 
Delphi 2010 Professional
 
#4

AW: Seltsames Memo LoadFomFile inculde Phänomen

  Alt 3. Okt 2014, 09:22
OT: @himitsu

Und dieses if myboolean = True then ist auch eine geährliche Angelegenheit.

Könntest Du mal aufhören, ständig diesen Unsinn zu posten?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Seltsames Memo LoadFomFile inculde Phänomen

  Alt 3. Okt 2014, 09:41
OT: @himitsu

Und dieses if myboolean = True then ist auch eine geährliche Angelegenheit.

Könntest Du mal aufhören, ständig diesen Unsinn zu posten?
Nein, weil es kein Unsinn ist!
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.631 Beiträge
 
Delphi 12 Athens
 
#6

AW: Seltsames Memo LoadFomFile inculde Phänomen

  Alt 3. Okt 2014, 09:48
OT: @himitsu

Und dieses if myboolean = True then ist auch eine geährliche Angelegenheit.

Könntest Du mal aufhören, ständig diesen Unsinn zu posten?
Ich bin mir jetzt nicht sicher, ob du die Aussage oder den Tippfehler meinst. Für ersteren Fall habe ich hier eine kleine Prozedur, die den Unterschied demonstriert:

Delphi-Quellcode:
procedure Main;
var
  myBoolean: Boolean;
  I: Integer;
begin
  I := 2;
  Move(I, myBoolean, Sizeof(myBoolean));
  if myBoolean = (myBoolean = true) then
    Writeln('OK!')
  else
    Writeln('Shit!');
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Seltsames Memo LoadFomFile inculde Phänomen

  Alt 3. Okt 2014, 10:11
Wieso hab ich das gepostet?

Hab es "gefährlich" genannt und genug Gründe erwähnt es besser sowas nicht zu machen, was Uwe auch grade nochmal anschaulich demonstriert hat.
(bis auf spezielle Sonderfälle macht man sowas einfach nicht, welche hier nicht vorliegen, wenn man die Funktion reparieren würde)

True ist nunmal nicht als 1 (die Konstante True) deklariert, sondern als <>0, was die automatische Booleanauswertung ordentlich berücksichtigt.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 3. Okt 2014 um 10:16 Uhr)
  Mit Zitat antworten Zitat
Sailor

Registriert seit: 20. Jul 2008
Ort: Balaton
112 Beiträge
 
Delphi 2010 Professional
 
#8

AW: Seltsames Memo LoadFomFile inculde Phänomen

  Alt 3. Okt 2014, 10:24
Wer so was macht, gehört abgemahnt und im Wiederholungsfall gefeuert.
Oder macht Ihr auch das?

Code:
PROCEDURE Main;
 VAR
  myString: String;
         i: Integer;

 BEGIN
  Move('1234',i,4);
  IF i = 1234 
   THEN Writeln('OK!')
   ELSE Writeln('Shit!')
 END;
Man kann mit einem Hammer Nägel in die Wand oder sich auf den Daumen hauen. Ich ziehe ersteres vor. Na ja, war OT und damit Ende Gelände.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Seltsames Memo LoadFomFile inculde Phänomen

  Alt 3. Okt 2014, 10:29
War ja nur ein Beispiel. Eine weiteres wäre der andere Wert für die Konstante True in der Sprache C, also auch alle Rückgaben von WinAPI Funktionen.

Die Konstante hat in Delphi den Wert 1 in C das binäre Komplement zu False ( 0) nämlich -1!
Und 1 ist was anderes als -1!

als True <> True.
Markus Kinzler
  Mit Zitat antworten Zitat
Sailor

Registriert seit: 20. Jul 2008
Ort: Balaton
112 Beiträge
 
Delphi 2010 Professional
 
#10

AW: Seltsames Memo LoadFomFile inculde Phänomen

  Alt 3. Okt 2014, 10:37
@Himitsu:
True ist nunmal nicht als 1 (die Konstante True) deklariert, sondern als <>0, was die automatische Booleanauswertung ordentlich berücksichtigt.

Nein, True ist nicht als <> 0 deklariert, sondern in Delphi so implementiert. True ist True und nicht 0 oder 3.5 oder HmstlBmpl. Implementierungsdetails haben in einem Programm nichts zu suchen. Das fällt einem sofort auf die Füße, wenn man z.B. unter Delphi entwickelt und dann auf andere Pascalsysteme portiert. Haben wir jahrelang so gemacht, erfolgreich. Mit obigen Tricks wären wir wohl ziemlich auf die Nase gefallen.

@MKinzler
Wenn ich mich außerhalb meiner Sprache bewege, muß ich eben aufpassen. Lies mal Integerwerte ein, die von einer IBM/360 stammen. In C gibt es im Unterschied zu Pascal keinen Wert True, das ist dort ein
#define true -1.

Aber nu is wirklich gut.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:10 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