wie kann ich mit Basic-Code rechnen??

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

der.milco
***
Beiträge: 51
Registriert: Mo, 07.11.2005 16:44

wie kann ich mit Basic-Code rechnen??

Beitrag von der.milco »

Hallo,

ich suche heute eine Möglichkeit mit dem Code von Basic einfache Rechenoperationen durchzuführen.

Bsp-weise sollen zwei Numerische Felder miteinander addiert werden.
Oder auch die Zellen eines Arbeitsblattes in Calc.

Hat jemand ne Idee?

einfach +, -, * oder / zwischen die Kontrollfeldbezeichnungen zu schreiben bringt nichts.

Und kann ich eigentlich auch die < und > -Funktionen verwenden?

Danke
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Bsp-weise sollen zwei Numerische Felder miteinander addiert werden
...
einfach +, -, * oder / zwischen die Kontrollfeldbezeichnungen zu schreiben bringt nichts
Ich weiß nicht, soll es das heißen was Du schreibst? Denn das ginge natürlich nicht, weil:

ein Feld ist ein Objekt, die Bezeichnung des Feldes lediglich dessen Name also der Wert einer Eigenschaft, nur Beides ist nicht der numerische Wert, der ist <Objekt>.Value und der muß addiert werden
Und kann ich eigentlich auch die < und > -Funktionen verwenden?


Ja. (aber das sind (Vergleichs-)Operatoren und keine Funktionen)


Gruß
Stephan
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Beitrag von ykcim »

Hi,

Du darfst die Rechenoperation mit dem Kontrollfeld versuchen sondern mit dem Inhalt des Kontrollfeldes. Eventuell mußt Du den Wert erst in eine Zhal wandeln.

Bei eines Textfeld z.B. mit Zahl1=Val(Kontrollfeld.text)

Für Zellen gilt das ebenso. Gerechent wird mit dem Inhalt einer Zelle.

Zahl1=Zelle.value

Weitere Infos findest Du in der FAQ von mir.

mfg
Michael Dannenhöfer
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
der.milco
***
Beiträge: 51
Registriert: Mo, 07.11.2005 16:44

Beitrag von der.milco »

So, habs probiert und es klappt.
(dabei dachte ich ich hätte das schon ausprobiert...)
_______________________________________________________
Zitat:
Und kann ich eigentlich auch die < und > -Funktionen verwenden?
Ja. (aber das sind (Vergleichs-)Operatoren und keine Funktionen)
Ich weiß, aber die funktionieren bei mir nicht richtig:

Code: Alles auswählen

Sub Rechnen
  myDoc   = thisComponent
  mySheet = myDoc.sheets(2)
  myForm  = mySheet.drawpage.forms(0)
' myCell1 = mySheet.getCellRangeByName("$J$7")
  myCtl1  = myForm.getByName("NumericField1")
  myCtl2  = myForm.getByName("NumericField2")

'  msgbox myCtl1.value > myCtl2.value

  if myCtl1.value > myCtl2.value then
  	msgbox "true"
  else
  	msgbox "false"
  end if

End Sub
Egal, ob ich mir gleich die MsgBox anzeigen lasse, oder das erst mit IF überprüfe: in der MsgBox steht immer true.
Völlig gleich, welche Werte in den NumFeldern stehen...

Jmd ne Lösung??
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Milco,
Egal, ob ich mir gleich die MsgBox anzeigen lasse, oder das erst mit IF überprüfe: in der MsgBox steht immer true.
Völlig gleich, welche Werte in den NumFeldern stehen...
Hmm, das dürfte mit der internen Struktur und der automatischen Variablen-Erkennung zu tun haben.
Vergleichsoperatoren können nur Ergebnisse (also Variableninhalte) vergleichen, nicht selbst erst Rechenwege ausführen. Also:
Entweder ziehst du die Ergebnisse raus :

Code: Alles auswählen

a = myCtl1.value
b = myCtl2.value 
if a > b then.
...
oder du entkoppelst die Rechenoperationen:

Code: Alles auswählen

if ( myCtl1.value ) >  ( myCtl2.value)  then 
...
In beiden Fällen erhälst du dein gewünschtes Ergebnis.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Antworten