Seite 1 von 1

Diverse Probleme beim Bauen eines Software-Rechners

Verfasst: 22.01.2008 22:59
von Lukers
Hi Leute!

Bin saufroh, endlich mal ein gescheites Board für PB gefunden zu haben. Hoffe ihr könnt mir helfen.

Also, für meine Facharbeit (abgabe diesen Freitag) soll ein Programm geschrieben werden, das die Umlaufbahnen von Satelliten berechnet.
Klingt komplizierter als es ist:

Der User gibt einen von zwei Werten an und das Programm errechnet anhand einer Formel den Anderen.

Dazu brauche ich aber als Konstante die Erdmasse, welche ca. 6*10^27 kg beträgt - also sauviel.

Code: Alles auswählen

Zahl.l = 10e27
OpenConsole()
Print(Str(Zahl))
Input()
End
Mach ich das mit einer long-Variable oder einer Double, dann sagt er -2408777807 (oder so ähnlich, ihr wisst schon), bei einer Quad null.

wie schaff ich es also, so enorme Zahlen abzuspeichern und auszugeben oder damit zu rechnen?

Frage Nummer 2:
Wie kann ich die Eingabe in ein StringGadget mit Enter bestätigen, anstatt zB auf einen Knopf zu klicken?

Wär cool, wenn mir das mal einer erläutern könnte.

Ich bedanke mich,
Lukers

edit: habe PB 3.93 und 4.10, für ersteres gibts alle Tuts, für zweiteres Codes aus der Datenbank. andersrum leider nich so wirklich :(

Verfasst: 22.01.2008 23:12
von Riacon

Code: Alles auswählen

masse.d=5.974e24
Debug(masse)

Verfasst: 22.01.2008 23:45
von Lukers
ok danke für die antwort, aber ich fürchte das brauch ich ein bisschen genauer erklärt...

wenn ich das so compile, dann krieg ich die zahl korrekt ausgeworfen.
aber wie kann ich innerhalb meines programms damit rechnen? wenn ich die Zahl zum beispiel in die Konsole Printe, ist sie nach wie vor diese 10stellige.
wo ist also der sinn beim Compile-Command?

und jo hast recht, sind 10e24 kg. dachte das wären tonnen.

Verfasst: 23.01.2008 00:10
von HeX0R
Lukers hat geschrieben: aber wie kann ich innerhalb meines programms damit rechnen? wenn ich die Zahl zum beispiel in die Konsole Printe, ist sie nach wie vor diese 10stellige.
wo ist also der sinn beim Compile-Command?

Code: Alles auswählen

masse.d=5.974e24
OpenConsole()
PrintN(StrD(masse))
Input()
Frage Nr.2:
Schau dir mal AddKeyboardShortcut() an.

Verfasst: 24.01.2008 21:51
von Lukers
jo danke, hat alles super geklappt! ich muss also StrD() statt nur Str() nehmen.

so, habe da eine neue Frage:

Ich habe mehrere StringGadgets. Wie kann ich das Programm überprüfen lassen, dass nicht mehr als ein Gadget einen Wert ungleich null beinhaltet?

Oder vllt als andere Methode:
Wie kann ich das Programm den Inhalt aller StringGadgets überprüfen lassen, und mir die Anzahl aller Gadgets, die null als Inhalt haben als Variable auszuspucken?

dank euch

Verfasst: 24.01.2008 22:19
von hardfalcon
Was die Stringgadgets angeht: Am einfachsten wäre es, wenn du einfach immer den Wert aus dem Gadgets, das zuletzt angeklickt/editiert wurde, übernimmst.
Damit der User das auch sieht, kannst du die andern Gadgets mit DisableGadget() deaktivieren (diese werden dann ausgegraut dargestellt, allerdings bin ich mir leider nicht 100% sicher, dass deaktivierte Gadgets noch ne Message geschickt kriegen, wenn sie angeklickt werden).

Verfasst: 24.01.2008 22:24
von Scarabol
Hi,

einfacher gehts auch du überprüfst einfach in deiner Repeat Schleife, mit GetGadgetText() ob das Feld nix "" oder "0" enthält und zählst i+1 nachher steht in i dann die Anzahl der "falschen" Gadgets.

Code: Alles auswählen

Repeat
  i = 0
  If GetGadgetText(1) = "" Or GetGadgetText(1) = "0"
    i+1
  EndIf
  If GetGadgetText(2) = "" Or GetGadgetText(2) = "0"
    i+1
  EndIf
  ; usw für alle Gadgets !Auf Gadget Nummer achten!
  Debug "Sie haben "+Str(i)+falsche Gadgets!"
ForEver
Gruß
Scarabol

Verfasst: 25.01.2008 00:01
von Lukers
super, das klappt.

vielen dank!