 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 31.01.2007, 19:18 Titel: Mengen / Sets in freeBASIC |
|
|
Hallo.
Nach langem mal wieder 'ne Frage zum programmiertechnischem mit freeBASIC von mir.
Der ein oder andere kennts evtl.: Mengen bzw. Sets. In Pascal hab ich die Möglichkeit, mit Mengen zu hantieren. Ich poste mal ein kleines Stück Code, müsste auch für "Nicht-Pascaller" verstehbar sein:
Code: |
if c is in ['A', 'B', 'C']
|
bzw. auch:
Das Prinzip müsste, as say, selbsterklärend sein, wenn nicht, dann erklär ich's auch.
Wie der Titel halt so vermuten lässt, möchte ich sowas auch in FB verwenden (enorm praktisch). Bitte jetzt nicht mit ASCII-Codes kommen, da ich genau die vermeiden möchte, arbeite ich gern mit Sets.
Freue mich über jede Antwort!
Greets,
Mao _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 31.01.2007, 21:35 Titel: Re: Mengen / Sets in freeBASIC |
|
|
Mao hat Folgendes geschrieben: | Ich poste mal ein kleines Stück Code, müsste auch für "Nicht-Pascaller" verstehbar sein:
Code: |
if c is in ['A', 'B', 'C']
|
bzw. auch:
| ..welchen Pascal-Dialekt benutzt du denn ?
('is' ist kein Befehlswort in Pascal(weder BP noch FP, VP hab ich noch nicht gefunden..)
Die Anweisung Code: | If c In ['A', 'B', 'C'] Then Write('Yes'); | liefert true, wenn c in der Menge der Buchstaben in eckigen Klammern enthalten ist.
Soweit, ist das also klar..
Bei so einfachen Operationen hilft der Instr()-Befehl: Code: | IF Instr("ABC", Left(c, 1)) Then
Write("Yes") | Er liefert sogar die Position innerhalb des Strings oder 0(false), wenn das Zeichen nicht vorkommt. Left() deshalb, weil sonst auch Werte wie "AB" und "BC" bewertet würden. Bei Zahlen ist das komplizierter..
Sollen längere Zeichenfolgen erlaubt sein, kannst du dir mit Trennzeichen im String helfen, die gewöhnlich nicht benutzt werden; Code: | If Instr("§Eingang§Küche§Bad§Wohnzimmer§Ausgang", "§" &Auswahl) Then 'Mach halt irgendwas.." | ..allerdings brauchst du dann eine eigene Index-Verwaltung, die dir den gewünschten Wert liefert.
Ob es andere Möglichkeiten in FB gibt?
k.A.
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 31.01.2007, 22:12 Titel: |
|
|
oder:
Code: | Dim c As Integer = 25
Select Case c
Case 0 To 9
?"Mach hier was ..", c
Case 10, 15, 20, 25
?"Mach dort was ..", c
End Select
Sleep |
Code: | Dim c As String ="c"
Select Case c
Case "0" To "9"
?"Mach hier was .."
Case "A","c","z"
?"Mach dort was .."
End Select
Sleep |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
vander
Anmeldungsdatum: 03.01.2007 Beiträge: 16
|
Verfasst am: 01.02.2007, 11:12 Titel: |
|
|
In VB glaub ich, oder wars VBA?, hab ich sowas mal verwendet. Da gabs auch ein spezielles Schlüsselwort/Funktion für, ich komm aber grad nicht drauf. In der Dokumentation von FB ist es mir aber nicht aufgefallen. Oder meinst du nix eingebautes, sondern willst die entsprechende Funktion nachbilden? |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 01.02.2007, 15:34 Titel: |
|
|
@ytwinky:
Delphi. Also ObjectPascal.
Das is gehört dort nicht hin stimmt, das kam zustande, da ich vorher gerade eine Weile mit 'ner Menge Objekten gearbeitet hab (nicht die Menge, um die es hier geht, sondern im Sinne von viel ). Und zur Typüberprüfung in einer allgemeingültigen OnClick-Prozedur...
Es muss natürlich in heißen.
/edit:
In ObjectPascal ist "is" ein Operand.
@volta:
Mhm, das gibt es in Pascal zwar auch und geht auch, aber Mengen find ich da irgendwie einfacher zu handhaben, da man einfach nur einmal abfragen brauch, ob ein was von der Menge in dem übergebenem Wert ist. Hier müsst ich ja dann erst noch ein Select Case rumpinseln - also das geht zwar auch, aber ich bin faul...
@vander:
Ich möchte die Funktion nicht nachbilden, ich will sie nur nutzen.
Noch mal allgemein. Mit:
Code: |
if c in ['A'..'J'] ...
|
Will ich beispielsweise überprüfen, ob Char c in der Menge 'A' bis 'J' vorkommt. Heißt, ob der Wert im Bereich von A bis J liegt. Das geht zwar auch mit Select Case und intern mit ASCII-Codes, aber das wollt ich ja vermeiden.
Naja, wie dem auch sei, es wäre ja nur Komfort gewesen, der nicht unbedingt nötig ist.
Danke aber für alle Antworten!
Greets,
Mao _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
Verfasst am: 01.02.2007, 15:45 Titel: |
|
|
LOL (Wiedermal... )
Warum schnappst dir net den FB-Compiler-Code und baust dir dieses Teil ein?
FB::Mao
Kannst ja dann als Exorc-Standart-Sprache nutzen xD |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 01.02.2007, 19:23 Titel: Re: Mengen / Sets in freeBASIC |
|
|
ytwinky hat Folgendes geschrieben: | Code: | If Instr("§Eingang§Küche§Bad§Wohnzimmer§Ausgang", "§" &Auswahl) Then 'Mach halt irgendwas.." |
|
Ein kleiner Bug steckt jedoch noch hier drin: Im Fall von Auswahl="Wohnz", "Kü" usw. versagt obiger Code. Deshalb kleine Verfeinerung:
Code: | If Instr("§Eingang§Küche§Bad§Wohnzimmer§Ausgang§", "§" & Auswahl & "§") Then 'Mach halt irgendwas.." |
Man beachte, dass sowohl zu Beginn als auch am Ende das Trennzeichen vorhanden sein muss. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 01.02.2007, 20:46 Titel: |
|
|
Ooops, stimmt.. _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|