AGB  ·  Datenschutz  ·  Impressum  







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

boolsche's AND

Ein Thema von Arnulf · begonnen am 5. Mai 2005 · letzter Beitrag vom 5. Mai 2005
Antwort Antwort
Seite 1 von 2  1 2      
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#1

boolsche's AND

  Alt 5. Mai 2005, 21:25
Hi
Also irgendwas versteh ich da falsch?
Es ist zwar lange her, daß ich programmieren gelernt hab aber Boolsche's AND gibt doch nur true zurück wenn beide Bedingungen auf TRUE sind.

Jetzt hab ich folgenden fall:

if (extracted > '20') and (extracted <> 'timeout')
then begin
bla bla
end;

In extracted steht '4' drin laut Debugger - warum wird aber 'bla bla' ausgeführt?
jetzt hab ich doch FALSE AND TRUE verknüft - das sollte doch FALSE zurückliefern oder nicht?

Arnulf
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#2

Re: boolsche's AND

  Alt 5. Mai 2005, 21:28
Alles in Klammer setzen:

if((extracted > '20') AND (extracted <> 'timeout')) Edit: Gibts denn keine Meldung? ein > bei einem String ist etwas seltsam
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: boolsche's AND

  Alt 5. Mai 2005, 21:29
extracted ist wie du geschrieben hast '4' und wenn man strings vergleicht wird vermutlich zeichen für zeichen verglichen. Das heißt, die ersten zeichen von den beiden strings werden verglichen. Sind diese verschieden werden die nächsten beiden verglichen, ansonsten eben nicht. Da aber '4' bereits größer '2' ist, ist extracted eben größer.
ansonsten solltest du
if (strtoint(extracted) > 20) and (extracted <> 'timeout') verwenden was aber vermutlich nicht geht da extracted nicht zwangsläufig eine zahl zu sein scheint (ansonsten müsste "timeout" eine variable sein)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#4

Re: boolsche's AND

  Alt 5. Mai 2005, 21:31
Zitat von SirThornberry:
extracted ist wie du geschrieben hast '4' und wenn man strings vergleicht wird vermutlich zeichen für zeichen verglichen. Das heißt, die ersten zeichen von den beiden strings werden verglichen. Sind diese verschieden werden die nächsten beiden verglichen, ansonsten eben nicht. Da aber '4' bereits größer '2' ist, ist extracted eben größer.
Genau. Kann man mit '123' nachvollziehen. Obwohl als Zahl größer als '20' in der Bedingung, wird es als String als kleiner erkannt.
  Mit Zitat antworten Zitat
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#5

Re: boolsche's AND

  Alt 5. Mai 2005, 22:09
Oje dann muß ich immer genau aufpassen was ich mache ...

Das einfachste wäre vermutlich wenn ich 20 binär verknüpfe dann hab ich die gesammte zahl als string.
Das ganze ist eine elend lange auswertung verschiedenster strings.
Das schaut so aus:

a : 4
b : hallo
c : 40
d : nein

extracted ist also immer der wert von a,b,c,d.
Ich weiß zwar ob ich einen string oder ein integer erwarte, aber leider wird es hier nicht so genau genommen mit strings und integer deshalb muß ich immer annehmen, daß es ein string sein könnte.

in dem Fall erwarte ich zwar einen zahlenwert, aber keiner garantiert es mir und dann muß ich auch noch prüfen ob der wert zu niedrig, zu hoch oder ob ich eben einen timeout bekommen hab.

In delphi bekomm ich ja bei strtoint eine EConvertError exception was auch nervt .
In dem Fall kann man in C wohl besser pfuschen lol - dafür sucht man ewig nach dem fehler ....

Die eizige Lösung die mir einfallen würde, wäre alle bytes in dem string zu addieren und dann die integer zu vergleichen.
Naja mit Rechenleistung muß man ja nicht mehr sparen heutzutage.
Hat trotzdem jemand nocht einen bessere idee?

Bzw. gibt es eine einfache möglichkeit einen string binär zu addieren, ohne daß ich ein array of char mache und die in ner schleife addiere?.

Danke
Arnulf
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: boolsche's AND

  Alt 5. Mai 2005, 22:23
dann würde ich dir empfehlen zu prüfen ob es ein Integer ist oder nicht (TryIntToStr müsste es glaub ich geben). und dann je nach dem die prüfung anders durchführen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#7

Re: boolsche's AND

  Alt 5. Mai 2005, 22:44
...oder auch val() oder inttostrdef().
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#8

Re: boolsche's AND

  Alt 5. Mai 2005, 23:11
Zitat:
TryIntToStr
existiert nicht

Zitat:
val()
ist wohl eine Art TryIntToStr

Zitat:
inttostrdef()
Das ist lustig - man findet so seltsame dinge auch nur in Delphi lol - strtointdef hald.

Da ich ja weiß, daß ich ein integer erwarte, kann ich bei inttostrdef einfach auf einen wert stellen der über den erwarteten liegt - oder hald unter - jeh nachdem, dann hab ich bei string immer true. das sollte reichen und ist mir als extrem faulen programmiere auch genug lol.

man lernt nie aus ...
so mach ichs jedenfalls mal - danke.
Delphi-Quellcode:
if extracted <> 'timeoutthen
   if (strtointdef(extracted,21) > 20) then
       begin
       ....
       end;
Aber trotzdem wäre es interessant wie man das in Delphi lösen würde wenn ich diese funktionen nicht hätte.
Binäre addition der char's ist wohl immer noch die besste methode in dem fall oder?.
Und die einzige methode die mir da so auf die schnelle einfallen würde, wäre:

Delphi-Quellcode:
function addstringtoint (str : array of char; laenge : integer) : integer;
var i,added : integer;
begin
  for i := 1 to laenge do
    added := added + str[i]; //hab vergessen wie ich von einem character den ascii wert bekomme :)
  addstringtoint := added;
end;
.
.
.
var addedstr : integer;
begin
  addedstr := addstringtoint(mystring, lenght(addstring));
end;
Das sollte doch ebenfalls hinhauen oder?.

Arnulf
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#9

Re: boolsche's AND

  Alt 5. Mai 2005, 23:16
Delphi-Quellcode:
function addstringtoint (str : array of char; laenge : integer) : integer;
var i,added : integer;
begin
  for i := 1 to laenge do
    added := added + str[i]; //hab vergessen wie ich von einem character den ascii wert bekomme :)
  addstringtoint := added;
end;
hier wirst du Probleme damit bekommen, dass added nicht initialisiert wird, was dir Delphi auch melden sollte. Somit hast du da noch irgendwelchen Speichermüll in added stehen haben.
Ascii und zurück: chr\ord
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: boolsche's AND

  Alt 5. Mai 2005, 23:21
einfaches addieren geht auch nicht denn mit einfachem addieren wäre "18" größer als "20". Du musst beim addieren also auch noch die länge des strings beachten. Und als übergabeparameter kannst du anstelle von "str : array of char" auch gleich "str: String" nehmen
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  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 17:20 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