| 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, 11: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, 16: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, 20: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, 21: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, 22:25    Titel:  | 
				     | 
			 
			
				
  | 
			 
			
				Ihr verascht mich doch!   | 
			 
		  | 
	
	
		| Nach oben | 
		 | 
	
	
		  | 
	
	
		volta
 
 
  Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
  | 
		
			
				 Verfasst am: 13.09.2012, 09: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, 17: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, 18: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, 19: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, 02: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, 09: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: 2531 Wohnort: Hofen SH (Schweiz)
  | 
		
			
				 Verfasst am: 14.09.2012, 19: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, 12: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 | 
		 | 
	
	
		  | 
	
	
		 |