Enumeration

Anfängerfragen zum Programmieren mit PureBasic.
Martin66119
Beiträge: 282
Registriert: 03.01.2005 11:36

Enumeration

Beitrag von Martin66119 »

Einen guten Tag!

Als Anfänger fehlen einem leider immer die richtigen Lösungsansätze!

Ich habe folgendes Problem!

mit
Enumeration
#String_10
(#String_11
...
EndEnumeration
habe ich eine ganze Menge von
StringGadget(#String_10, 100, 40, 40, 20, "")

definiert.
Nun möchte ich mit einer Schleife die mittels Tastatur eingegebenen Werte mit einer Schleife einlesen (z.B. 10 "StringGadget").

Nun die zwei Fragen!

1)
Muss ich Nummerierung des Systemes verwenden

For i = i to 10
text$ = GetGadgetText(i)
Next i

oder kann ich anstelle von i in der Funktion GetGadgetText(i) auch so etwas wie "String_10" verwenden?

2) Wie speichere ich am besten die über die Tastatur eingegebenen Werte ab, um auf diese auch nach einem Neustart des Programmes oder auch des Rechners zugreifen zu können?

Danke für die Hilfe!
Martin
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Also wie jetzt?
So wie ich es verstanden hab gibt der User irgend ne Zahl irgendwo ein und dann wilst du dadurch ermitteln welche Konsante er mein?

Also erstmal (weiß net ob dir das klar ist) sind Konstanten Dingens, die beim compilieren in die jeweiligen zugeordneten Werte umgewandelt werden.
Bei Enumeration wird der ersten Konstante 0 dem 2 Wert 1 usw zugeordnet.
Wenn du jetzt also durch einen im Stringgadget eingegebenen Wert die Konstante ermitteln willst, so musst du wissen von wo an Numerirt wurde.
Wenn du jetzt die erste Konstante mit 6 die 2 mit 7 usw füllen willst must du hinter Enumeration die Zahl 6 schreiben.
Also:
Enumeration 6

Also kannst du mit einer Schleife die gadgets durchgehen, wenn du weißt wo du angefangen hast.

Du könntest statt
For i = 1 to 10
aber zB auch
For i = #String_1 to #String_12
schreiben da die Konstanten ja durch Zahlen ersetzt werden.

Das mit dem "String_10" geht NICHT da wie schon gesagt Konstanten zahlen und keine Strings sind.

Abspeichern tust du die eingegebenen Werte am besten in ne Preference oder txt Datei und ließt sie mit Val() dann wieder aus.
Zuletzt geändert von Konne am 27.12.2005 17:18, insgesamt 1-mal geändert.
Benutzeravatar
Franky
Beiträge: 1132
Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Kontaktdaten:

Beitrag von Franky »

Und zudem ein kleiner Tip von meiner Seite:

#string_10 soll welchen wert enthalten?

Ich weiß ja nicht, wofür du die Werte bzw die Gadgets nachher brauchst, aber ich würde dir vorschlagen, bessere bezeichnungen zu nehmen, sonst sitzt du nach spätestens 20 Stringgadgets und hast ka, welche nummer für welches gadget steht, bzw, wofür dieses Gadget wiederrum genutzt wird ;)

Enthält das Gadget z.b. einen Namen: #string_name
Vorname: #string_vorname
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Ja, aber dann sind doch die For-Schleifen Sinnlos.
Mit #String_Name und #String_Vorname kann man doch nicht so "Komfortabel" wie mit ner For-Schleife die Gadget analysieren (auch wenn ich den Sinn dahinter ned verstehe... :? ).
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »



For I = #String_Name To #String_Vorname
   ; weiterer Code
Next

So in etwas kannste es auch lösen
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Und was ist, wenn die Enumeration vorne so aussieht:

Code: Alles auswählen

Enumeration
#String_Name
#String_Vorname
#String_Alter
#String_Wohnort
EndEnumeration
?
Dann werden mit deiner For-Schleife die anderen Gagdets einfach nicht mit angesprochen.
Das heisst, seine Enumeration müsste (bei vielen Gadgets) gut durchdacht sein.
Also Gruppieren wär ne gute Möglichkeit.

Gr33tz
Tafkadasom2k5
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Noch mal zur Verdeutlichung:


Enumeration 0 ; StringGadgets
   #String_Name
   #String_Vorname
   #String_Wohnort
EndEnumeration

Enumeration #PB_Compiler_EnumerationValue ; Buttons
   #btnOk
   #btnCancel
EndEnumeration

Enumeration #PB_Compiler_EnumerationValue ; Options
   #optKlar
   #optUnKlar
EndEnumeration

Debug #optUnKlar
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Jup, so meinte ich das mit dem Gruppieren.
Danke TS :)

Brauch öfter jemanden, der mir meine Ideen in Code umwandelt ;)
:allright: :allright:

Gr33tz
Tafkadasom2k5 :D
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Ich find bei Gadgets sind eigendlich Konstanten verdammt unnützlich.
Es wäre viel geiler wenn man ansetelle davon die hwnds usw in nen extra "GadgetVariablenTyp" oder so speichern könnte. Vorallem bei dlls wäre das ein Traum. Da das aber nicht so ist und in 4.0 glaube ich net geändert wird werde ich mich wohl weiterhin mit dem doofen #PB_any usw rumschlagen müssen :(
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> Ich find bei Gadgets sind eigendlich Konstanten verdammt unnützlich.

Geschmackssache. Ich finde Konstanten bei Gadgets unverzichtbar.
Somit kann ich sofort sehen, um welches Gadget es sich handelt:

Code: Alles auswählen

Select EventGadgetID
  Case #frmMain_cmdAdd
   [...]
  Case #frmMain_cmdEdit
   [...]
  Case #frmMain_cmdDelete
   [...]


Grüße ... Kiffi
Antworten