Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Weitere Nutzungsmöglichkeiten von data o.ä.

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Powertower



Anmeldungsdatum: 30.03.2011
Beiträge: 8

BeitragVerfasst am: 30.03.2011, 16:52    Titel: Weitere Nutzungsmöglichkeiten von data o.ä. Antworten mit Zitat

Hi,
Ich bin recht neu hier ( hab mich durch ein paar Tuts auf der offi Seite gefressen...) und konnte zu folgendem problem nix finden( kein google kein FB o FBForum)

ich habe den Befehl [data] entdeckt.
find ich sehr schön nur ich fänd es noch schöner wenn ich in der Lage wär data IN einem Programm zu verändern/beschreiben/überschreiben.

Was natürlich auch ginge ist ein gleichwertiger Ersatz lächeln

Also (ich schreibe manchmal kompliziert):
z.B.
Code:

Dim as Integer X, n
data 1, 2, 3, 4
for n = 1 to 4
  read X
  Print X
  Sleep 500
next n

ja ich spiele gerne rum ( sleep 500 ; read,print usw...)

aber ich hätte gerne die möglichkeit data zu verändern, also in einer schleife z.b.
Code:

Dim as Integer X = 5
data 1, 2, X, 3, 4  'das geht halt nicht

'oder: (nicht echte FB schreibweise)
SCHREIBE (X) ZU data  'oda so^^

dass dann:
Code:

data 1, 2, 3, 4, X
'praktisch
1, 2, 3, 4, 5


ich hoffe ist klar was ich meine und ihr schlagt nicht gleich die hände überm kopf zusammen. (jeder hat mal angefangen peinlich )
Ich brauch nen Kaffee... Ich brauch nen Kaffee... Ich brauch nen Kaffee...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4699
Wohnort: ~/

BeitragVerfasst am: 30.03.2011, 18:21    Titel: Antworten mit Zitat

DATA ist tatsächlich dazu gedacht, Daten statisch in das Programm einzubinden. Wenn du die einzulesenden Daten zuerst noch verändern willst, würde ich da eher über eine externe Datei gehen: Mit OPEN kannst du eine Datei zum Schreiben öffnen und die gewünschten Daten hineinschreiben (anschließend CLOSE nicht vergessen). Mit einem weiteren OPEN kannst du dann die Datei zum Lesen öffnen und die Daten wieder herauslesen.


Ach ja, was noch ginge, wäre der Einsatz des Präprozessors:
Code:
#DEFINE x 5
DATA 1, 2, 3, 4, x
DIM AS INTEGER i, wert

FOR i = 1 TO 5
  READ wert
  PRINt wert
NEXT

Ist aber auch statisch, weil der Wert bereits zu Compilierzeit festgesetzt wird. Letztendlich entspricht das #DEFINE einer Substitution von x durch 5.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
XOR



Anmeldungsdatum: 23.07.2010
Beiträge: 161

BeitragVerfasst am: 30.03.2011, 18:45    Titel: Antworten mit Zitat

Ich denke fuer diese zwecke waehre ein Array gut geeignet
Code:
Dim Tabelle(1 To 5) As Integer => {1,2,3,4,5}
Tabelle(3) = 7
For i As Integer = 1 To 5
   Print Tabelle(i)
Next
sleep
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Powertower



Anmeldungsdatum: 30.03.2011
Beiträge: 8

BeitragVerfasst am: 31.03.2011, 20:02    Titel: Antworten mit Zitat

ok... da kann ich mich mal hinterklemmen (referenz)... mit den Augen rollen
(ich versteh nicht alles direkt) aber ich denke OPEN CLOSE find ich am besten/einfachsten
danke leute!!

fals noch einer was hat:
immer her damit! happy happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Powertower



Anmeldungsdatum: 30.03.2011
Beiträge: 8

BeitragVerfasst am: 31.03.2011, 21:21    Titel: Antworten mit Zitat

ok ich habe es jetzt doch mit (wert TO wert2) geschafft.
wollte eigentlich ein array das sich selbst mit jedem schritt +1 zählt

ich hab:
Code:

Dim as Integer n, i, i1, Test
Dim as Single y(0 to i)
do
    i1 = i
    i = i1+1
    Input "", y(i)
loop until y(i) = 0
i1 = i
i = i1-1
for n = 1 to i
    Print y(i)
    i1 = i
    i = i1-1
next
sleep
end

und das klappt!

danke!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 31.03.2011, 22:02    Titel: Antworten mit Zitat

An und für sich ist READ und DATA ein Stück weit als Notkrücke zu betrachten, weil traditionelle BASIC-Dialekte (wie in den 80er-Jahren typischerweise üblich) noch keine Konstrukte wie
Code:
Dim Tabelle(1 To 5) As Integer => {1,2,3,4,5}

(von XOR zuvor gepostet) kennen, um feste Datentabellen (Array-Konstanten) definieren zu können.

Zur Frage, wann besser eine Datei und wann als Konstante: Aus meiner Sicht sollten Konstantenarrays und verwandte Sprachkonstrukte prinzipiell nur für kleinere, wirklich fixe Daten verwendet werden, z.B. die Namen der 7 Wochentage, die Namen der 12 Kalendermonate usw. als typische Beispiele. Sobald es komplexer wird (z.B. ein ganzes Telefonbuch), sind sofort separate Datendateien das Richtige und im Fall von schreibendem Zugriff sogar das einzig Richtige.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4699
Wohnort: ~/

BeitragVerfasst am: 31.03.2011, 22:06    Titel: Antworten mit Zitat

Habe da ein paar Probleme:
Code:
Dim as Single y(0 to i)

Da i noch den Wert 0 hat, ist das Array sehr klein. Du schreibst dann in höhere Bereiche hinein, was früher oder später zu Speicherzugriffsfehlern führen wird.

Code:
do
    i1 = i
    i = i1+1
    Input "", y(i)
loop until y(i) = 0

Ich sehe da den Sinn mit dem i1 nicht. Ein i = i+1 würde ausreichen.


edit:
Code:
for n = 1 to i
    Print y(i)
    i1 = i
    i = i1-1
next

würde ich eher im Rückwärtsschritt machen:
Code:
for n = i to 1 step -1
    Print y(n)
next

_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
XOR



Anmeldungsdatum: 23.07.2010
Beiträge: 161

BeitragVerfasst am: 31.03.2011, 23:21    Titel: Antworten mit Zitat

@dreael
wenn man nur schreibenden Zugriff braucht wuerde ich das auch mit open machen. Aber sehr heufig will man dann auch lesen und bei einem Telefonbuch haette ich 100% eine such-function drinnen und da muesste man sich zwischen geschwindigkeit => Allocatetes Array oder langsame => externe datei entscheiden. in der datei ist die hochste suchzeit (denke ich) n(o) bei einem gut aufgebautem array dagegen bloss (glaube) log2(o)+1.
(kann sein das es auch mit externen datein schneller geht, kenne die zugriffszeiten von datein und mit Allocate erzeugten arrays nicht). kommt halt eben auch drauf an ob man es schnell braucht oder speicherplatz sparend.

@Powertower
was nemored da angesprochen hat mit dem
Code:
Dim as Single y(0 to i)

stimmt natuerlich.
So koennte man es loesen:
mit Arrays:
Code:
Dim Tabelle() As String
Dim i As Integer

Do
   i+= 1
   ReDim Preserve Tabelle(i) As String
   Input "" , Tabelle(i)
Loop Until Tabelle(i) = ""

For i = i To 1 Step -1
   Print Tabelle(i)
Next
Sleep

weiss aber nicht wie gut ReDim Preserve ist.
Datei:
Code:
Dim FF As Integer
Dim Temp As String
FF = FreeFile
Open "List.txt" For Output As #FF
Do
   Input "" , Temp
   Print #FF, Temp
Loop Until Temp = ""
Close #FF
FF = FreeFile
Open "List.txt" For Input As #FF
Do
   Line Input #FF, Temp
   Print Temp
Loop Until Eof(FF)
Close #FF
Sleep
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz