Diverse Probleme beim Bauen eines Software-Rechners

Anfängerfragen zum Programmieren mit PureBasic.
Lukers
Beiträge: 4
Registriert: 22.01.2008 22:10

Diverse Probleme beim Bauen eines Software-Rechners

Beitrag 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 :(
Riacon
Beiträge: 61
Registriert: 21.01.2008 09:40

Beitrag von Riacon »

Code: Alles auswählen

masse.d=5.974e24
Debug(masse)
Lukers
Beiträge: 4
Registriert: 22.01.2008 22:10

Beitrag 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.
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag 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.
Lukers
Beiträge: 4
Registriert: 22.01.2008 22:10

Beitrag 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
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag 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).
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag 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
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Lukers
Beiträge: 4
Registriert: 22.01.2008 22:10

Beitrag von Lukers »

super, das klappt.

vielen dank!
Antworten