Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Löwenherz

Anmeldungsdatum: 25.08.2008 Beiträge: 86 Wohnort: auf einer sonnigen Insel :)
|
Verfasst am: 12.09.2012, 12:09 Titel: such "data+read+restore" Ersatz |
|
|
hallo. Ich habe eine allgemeine Frage ob es zu dem Befehl "Data", "Read" und "Restore" eine Alternative gibt (z.B. Arrays). Weiß jemand einen Rat, wäre supernett. Ich versuche ein Freebasic Beispiel in eine andere Basicsprache zu übersetzen und der Befehl "Data" läßt sich z.B. nicht in einer Funktion oder SUB speichern und wenn ich "Restore" und "read" benutze separat dazu, dann muss immer "DATA" (String Konstanten) dabei sein.
kleines Code Beispiel
Code: |
dim as long x,y
restore foo (was ist "foo"?)
read x
print x
restore bar
read x
print x
data 10,20
foo:
data 30,40
bar:
data "Hose", 2000 |
wäre gut wenn ich einen Tipp bekomme oder wie ein Freebasic Beispiel wie oben mit Array aussehen könnte (falls das überhaupt geht), danke!
grüße, frank _________________ Das Leben ist wie eine Pralinenschachtel, man weiß nie, was dort drinnen für tolle wie böse Überraschungen stecken |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 12.09.2012, 17:36 Titel: |
|
|
Na wie wärs die Daten in seperaten Dateien zu speichern? |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 12.09.2012, 21:47 Titel: |
|
|
etwa so:
Code: | Dim x(1 To 6) As Long ={10,20,30,40,Cvl("Hose"), 2000}
Print x(1)
Print x(2)
Print x(3)
Print x(4)
Print Mkl(x(5))
Print x(6)
Sleep |  _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
HorstD
Anmeldungsdatum: 01.11.2007 Beiträge: 110
|
Verfasst am: 12.09.2012, 22:48 Titel: |
|
|
Oder so:
Code: |
'PB/CC 6
#COMPILE EXE
#DIM ALL
FUNCTION PBMAIN () AS LONG
DIM x AS LONG, y AS LONG
DIM arr(1 TO 2) AS LONG
ARRAY ASSIGN arr() = 10, 20
DIM foo(1 TO 2) AS LONG
ARRAY ASSIGN foo() = 30, 40
DIM bar(1 TO 2) AS STRING
ARRAY ASSIGN bar() = "Hose", TRIM$(2000)
PRINT TRIM$(foo(2))
FOR x = 1 TO 2
PRINT bar(x)
NEXT
WAITKEY$
END FUNCTION
|
|
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 12.09.2012, 23:25 Titel: |
|
|
Ihr verascht mich doch!  |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 13.09.2012, 10:16 Titel: |
|
|
28398 hat Folgendes geschrieben: | Ihr verascht mich doch!  |
Ich würde dich nie zu Asche verarbeiten!  _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Löwenherz

Anmeldungsdatum: 25.08.2008 Beiträge: 86 Wohnort: auf einer sonnigen Insel :)
|
Verfasst am: 13.09.2012, 18:57 Titel: |
|
|
danke erst einmal allen für die tipps der restore Befehl macht mir noch Kopfzerbrechen. Hatte ein Codebeispiel gefunden wo es z.B. so ging..
Code: |
...
fileread:
'statements... do certain things first of all here
restore fileread
'statements... do other things here
|
und ich versteh's nicht ganz wozu dieser "restore" Befehl gut ist (hier sollen die Reihenfolge der Daten zurückgesetzt werden soweit ich verstanden habe), habe es schon mit GOSUB und "Reset" versucht, aber das klappt nicht als Ersatz und ist einfach ein Test gewesen, der unsinnig ist .
Die Idee mit Array und Daten einlesen finde ich im Moment viel besser. Danke bisweilen hierher  _________________ Das Leben ist wie eine Pralinenschachtel, man weiß nie, was dort drinnen für tolle wie böse Überraschungen stecken |
|
Nach oben |
|
 |
HorstD
Anmeldungsdatum: 01.11.2007 Beiträge: 110
|
Verfasst am: 13.09.2012, 19:31 Titel: |
|
|
Ohne DATA brauchst du kein RESTORE-
Zum Vergleich:
Code: |
Mit DATA
...
DATA "x", "y", "z"
fileread:
DATA "A", "B", "C"
...
...
restore fileread
FOR i = 1 TO 3
READ dat$
PRINT dat$ ' A B C
NEXT
''''''''''''''
Mit Array
...
DIM fileread(1 to 3) AS STRING
ARRAY ASSIGN fileread() = "A", "B", "C"
...
...
FOR i = 1 TO 3
PRINT fileread(i)
NEXT
|
Wenn du dich mit Pointern auskennst, sieh' dir ASMDATA an.
Ansonsten versuch's im powerbasic.de Forum |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 13.09.2012, 20:03 Titel: |
|
|
Ich weiß nicht, wie du auf PowerBasic kommst und dazu noch Codes postest, aber ich glaub das war das falsche Forum.
@Topic:
Data/Read/Restore ist ein altes System zur Datenhaltung, das seit Jahrzehnten überholt ist. Arrays sind für kleine Aufgaben genau richtig, volta zeigt in seinem Beispiel, wie man Arrays direkt initialisiert.
Bei größeren Datenmengen macht es Sinn, die Daten auszulagern. Möglich wäre hier eine Datenbank ála MySQL. Meist reicht aber auch eine einfache Textdatei aus. Wichtigstes Schlüsselwort dafür ist OPEN. |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 14.09.2012, 03:09 Titel: |
|
|
Ja*hust*MySQL, wie wärs mit SQLite. Dessen C API ist auch nicht so ganz butthurt wie die von MySQL. |
|
Nach oben |
|
 |
RWK
Anmeldungsdatum: 04.07.2011 Beiträge: 44
|
Verfasst am: 14.09.2012, 10:12 Titel: |
|
|
Was auch witzig ist, wenn denn Daten fest im Programm hinterlegt sein soll, man es aber doch vor dem erstellen der Datei ändern will, einfach eine Datei mit einzubetten.
z.B. Eine Datei für Tätigkeitenschlüssel die in meinem Fall T3.csv heisst
Code: | 10;Arbeitsschutzingenieur(in)
11;Ackerbauer/-bäuerin
11;Ackermann/-frau
11;Ackerwirt(in)
11;Agrochemiker(in)
11;Alleinmädchen - ohne nähere Angaben
11;Almbauer/-bäuerin
11;Almbauer/-bäuerin - Landwirt(in)
11;Arzneipflanzenanbauer(in)
11;Asphaltgewinner(in)
... 23.000 weitere
|
Code: |
#Include Once "File.bi"
#Include Once "IncFile.bi"
Dim Shared As String Taet3(40000,3), Taet5(40000,3)
Dim Shared As Integer what = 1
Sub Console ( DebugText As String)
FF_ListBox_InsertString( HWND_frmMain_ListConsole, 0, DebugText )
End Sub
Sub ReadFiles
Dim As Long x, y, z, p1, p2, p3
Dim As String buffer
p1 = 1: y = 1
incFile (incT3, "t3.csv")
buffer = *Cast(ZString Ptr, incT3)
x = Len(buffer)
Do
p2 = InStr(p1,buffer,";")
p3 = InStr(p2+1,buffer,Chr(13)&chr(10))
If p3 = 0 Then Exit Do
Taet3(y,0) = Str(y)
Taet3(y,1) = Mid(buffer,p1,p2-p1)
Taet3(y,2) = Mid(buffer,p2+1,p3-p2-1)
p1 = p3 + 2
y = y + 1
Loop Until p1 > x
|
Die IncFile.bi gibts hier http://www.freebasic.net/forum/viewtopic.php?f=7&t=8504&p72472
Die Datei liegt dann beim Erstellen des Programms im gleichen Ordner und wird dann einfach mit eingebunden.
Aber ansonsten ist SQLite wirklich gut. Benutze ich bei meinem LaufProgramm auch..ist nicht so schwer.
Grüße |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 14.09.2012, 20:47 Titel: |
|
|
READ und DATA inkl. RESTORE sind halt noch Relikte aus dem wirklich klassichen BASIC, z.B. Commodore 64.
FreeBasic aber besitzt inzwischen Sprachelemente vieler moderner Programmiersprachen, zu denen u.a. auch konstante Arrays mit Aufzählung initialisieren dazugehören. Sprachen wie C/C++, Java, Pascal usw. kennen übrigens nur diese Form, konstante Daten im Quellcode selber unterbringen zu können. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Löwenherz

Anmeldungsdatum: 25.08.2008 Beiträge: 86 Wohnort: auf einer sonnigen Insel :)
|
Verfasst am: 25.09.2012, 13:21 Titel: |
|
|
@alle: vielen Dank für die Infos ich versuch's nun mit Arrays, sieht besser und sinnvoller aus für mich. Muss mich da aber wieder noch etwas einfuxen mit freebasic. beste grüße, frank _________________ Das Leben ist wie eine Pralinenschachtel, man weiß nie, was dort drinnen für tolle wie böse Überraschungen stecken |
|
Nach oben |
|
 |
|