Fehler in der IN - Abfrage

  • 1
  • 2
  • 3
  • Seite 2 von 3
mc-electronic
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Sauerland NRW
Beiträge: 372
Dabei seit: 03 / 2008
Betreff:

Re: Fehler in der IN - Abfrage

 · 
Gepostet: 08.07.2014 - 16:15 Uhr  ·  #9
Hallo Thomas,

ganz einfach (verbrät natürlich 100 Byte auf dem Frame!) - Compilerschalter habe ich sonst nicht dafür gesetzt:

Procedure WritelnFile (lStr : String[100]; lBackupFile : Boolean);
Begin
Writeln(SerOut, lStr);
If lBackupFile Then
Writeln(FoT, lStr);
EndIf;
End;

Gruß, Michael

PS: Klar, Du ist OK!
Thomas.AC
Benutzer
Avatar
Geschlecht: keine Angabe
Alter: 44
Beiträge: 308
Dabei seit: 07 / 2013
Betreff:

Re: Fehler in der IN - Abfrage

 · 
Gepostet: 08.07.2014 - 16:40 Uhr  ·  #10
alles klar, habe ich verstanden.

wie ist das bei Writeln(SerOut,'irgend ein Text') implementiert. Hat man da auch diesen Frameverbrauch?
Merlin
Administrator
Avatar
Geschlecht:
Alter: 25
Beiträge: 1474
Dabei seit: 03 / 2005
Betreff:

Re: Fehler in der IN - Abfrage

 · 
Gepostet: 08.07.2014 - 16:51 Uhr  ·  #11
Hi Thomas.

It does consume a lot of frame to make a call like Michaels, but has great flexibility so like WriteLnFile( 'Fred is ' + HealthStateString ); is OK. But If you are prepared to sacrifice the flexibility, passing a pointer is kinder to the stack.
Thomas.AC
Benutzer
Avatar
Geschlecht: keine Angabe
Alter: 44
Beiträge: 308
Dabei seit: 07 / 2013
Betreff:

Re: Fehler in der IN - Abfrage

 · 
Gepostet: 11.07.2014 - 10:37 Uhr  ·  #12
Der Frameverbrauch ist hässlich, vor allem dann, wenn man einen Wrapper um Writeln erstellt.
Da doch lieber die Pointerlösung.

Besteht bei meiner Lösung die Gefahr eines Laufzeitfehlers oder gibt es andere Kritik?

Code
Implementation
{$IDATA}
alias
    SerOutPC = SerOutE0;

type
    string_type = String[255];
    stringPointer = pointer to string_type;

procedure WritelnWrapper(str : stringPointer);
begin
    Writeln(SerOutPC,str^);
end;

var
    text : String[20];
begin
    text := 'hier steht Text';
    WritelnWrapper(@text);
end.
Merlin
Administrator
Avatar
Geschlecht:
Alter: 25
Beiträge: 1474
Dabei seit: 03 / 2005
Betreff:

Re: Fehler in der IN - Abfrage

 · 
Gepostet: 11.07.2014 - 16:57 Uhr  ·  #13
Just how I would do it :-)
mc-electronic
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Sauerland NRW
Beiträge: 372
Dabei seit: 03 / 2008
Betreff:

Re: Fehler in der IN - Abfrage

 · 
Gepostet: 21.07.2014 - 11:15 Uhr  ·  #14
Hallo Rolf,

ich möchte das eigentliche Thema noch einmal auffrischen, da es in der allgemeinen Diskussion untergegangen zu sein scheint.

Warum bekomme ich in folgender IF-Abfrage die Antwort vom ACRco, daß die Zahl 2.3 NICHT zwischen 0 und 5 liegt?
VAR
lFL : Float;
...
lFl := 2.3;
If Not (lFl In [0..5]) Then
SLIP_WriteStr('TXT|2.3 ist nicht im Bereich von 0..5');
Else
SLIP_WriteStr('TXT|2.3 ist im Bereich von 0..5');
EndIf;

--> 2.3 ist nicht im Bereich von 0..5

??

Gruß, Michael
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 25
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: Fehler in der IN - Abfrage

 · 
Gepostet: 21.07.2014 - 13:24 Uhr  ·  #15
Hallo Michael,

das "IN" geht eigentlich nur mit ordinalen Zahlen.
Ich werde das jetzt mal nachprüfen und ggf. die Verwendung von float hier ausschliessen.
Resultat:
bei mir tuts.
Code
  lFl := 2.3;
  If lFl In [0..1] Then
    nop;
  Else
    nop;
  EndIf;
  If lFl In [0..5] Then
    nop;
  Else
    nop;
  EndIf;

rolf
mc-electronic
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Sauerland NRW
Beiträge: 372
Dabei seit: 03 / 2008
Betreff:

Re: Fehler in der IN - Abfrage

 · 
Gepostet: 21.07.2014 - 13:27 Uhr  ·  #16
Im Compiler-Handbuch haben Sie ja Float für den IN-Operator explizit eingeschlossen - und witzigerweise funktioniert die Abfrage ja korrekt, wenn man nicht das NOT davor schreibt...
  • 1
  • 2
  • 3
  • Seite 2 von 3
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   136   150 · Page-Gen-Time: 0.062257s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI