Bug in pos ?

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1617
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Bug in pos ?

Beitrag von corpsman »

Servus,

bei mir Kompiliert folgender Code :

Code: Alles auswählen

 
Procedure TForm1.Button1Click(Sender: TObject);
 
Var
  b: Boolean;
Begin
  b := true;
  If b And (lowercase(trim(edit3.text)) <> '') Then Begin
    b := pos(lowercase(trim(edit3.text)) <> '', lowercase(trim(Vorname))) <> 0;
  End;
End;
 
Entstanden ist er aus einem Copy Paste Fehler. Die Frage die sich mir nun stellt, warum akzeptiert der Kompiler das überhaupt ? Die Prüfung ob ein boolean Teil eines Strings ist ergibt für mich keinen Sinn.

Erzeugt unter :
Lazarus 1.2.2, SVN Revision : 44758, FPC 2.6.4 i386-win32-win32/win64
--
Just try it

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2807
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Bug in pos ?

Beitrag von m.fuchs »

corpsman hat geschrieben:Die Prüfung ob ein boolean Teil eines Strings ist ergibt für mich keinen Sinn.
Und wo bist du der Meinung, dass du so etwas prüfen würdest?

Edit: Jetzt sehe ich auch was du meinst, mit dem Beispiel von wp_xyz war es auch für einen alten, sehbehinderten Mann wie mich zu erkennen. :wink:
Zuletzt geändert von m.fuchs am Mo 28. Apr 2014, 12:07, insgesamt 1-mal geändert.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

wp_xyz
Beiträge: 5134
Registriert: Fr 8. Apr 2011, 09:01

Re: Bug in pos ?

Beitrag von wp_xyz »

Tatsächlich, dieser Code wird akzeptiert:

Code: Alles auswählen

 
var
  s, t: String;
  p: Integer;
begin
  s := 'test'; t := 'true';
  p := Pos(s <> '', t);     
 
Ctrl-Click auf "Pos" führt mich zu einer Routine, in der beide Parameter ein Variant sind. Damit akzeptiert der Compiler hier praktisch alles! Ob das im Sinn von Niklaus Wirth ist?

baumina
Beiträge: 152
Registriert: Mo 3. Feb 2014, 14:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Bug in pos ?

Beitrag von baumina »

Kleiner Vergleich zu Delphi, dort kommt es zu einer Compiler-Meldung.

Code: Alles auswählen

function Pos(const SubStr, Str: ShortString): Integer;
function Pos(const SubStr, Str: UnicodeString): Integer; overload;
function Pos(const SubStr, Str: WideString): Integer; overload;
function Pos(const SubStr, Str: RawByteString): Integer; overload;
.

Antworten