Daten abspeichern!

  • Hey, ich benötige mal wieder eure Hilfe. Ich weiß nicht, auf welche Art ich viele Arrays (max. 3 Spalten) in Datein abspeichern kann.
    Eine ini, html,dll oder gibs was anderes?
    Dazu würde ich gern wissen, obs unterschiede zwischen dem laden von solchen Datein (html,txt,ini...)gibt, sonst könnte ich ja das alles einfach in einei txt...schreiben und soähnlich wie ini aufbauen...und das mich Suchfunktionen aufrufen...

    Ich hoffe ihr versteht was ich meine ^^

    Einmal editiert, zuletzt von Faweyr (15. Januar 2010 um 14:15)

  • Ich hab schon oft davon gehört...jedoch verstand ich nie, in welchem Format das abgespeichert wird, oder wie das so im etwa läuft!
    Kann jemand das schnell zusammenfassend erklären.
    Wäre echt cool. Danke ;)

  • Hi,

    Zitat

    in welchem Format das abgespeichert wird,

    SQLite ist eine Datenbank. Abgesehen davon, daß du die entsprechende dll im Zugriff haben musst, ist nicht gesagt, daß du mit einer Datenbank besser oder schneller an deine Arraydaten kommst als beim Lesen aus einer Textdatei. Wenn natürlich Abhängigkeiten der Daten deiner Arrays untereinander bestehen und du diese Abhängigkeiten in deinem Script abfragen möchtest, dann ist eine Datenbank klasse!

    Aber nur um Arrays beim Start eines Scripts zu befüllen würde ich persönlich keine Datenbank implementieren. Das geht mit einer beliebigen Datei (txt, html, trw, kft, hzx....) genauso.

  • Jub...danke. Ich brauche es für mein Spiel, da ca 100 Welten vorhanden sein werden, und diese alle definiert werden müssen, fand ich das es besser wäre diese alle in einer solchen Datenbank zu defnieren, und dann immer die jeweilige "Welt-Data" zu laden...
    Gibt es ein Programm, womit man die Tabellen in der SQ-Lite zu sehen bekommt und sie auch ändern kann?

  • Bitteschön :P

    FileReadToArray3d & FileWriteFromArray3d
    [autoit]

    #include <Array.au3>
    Dim $3DArray[5][5][3]
    _Arraybefuellen()
    _FileWriteFromArray3D(@DesktopDir&"\3dim.txt",$3DArray)
    Global $New3DArray
    _FileReadToArray3D(@DesktopDir&"\3dim.txt",$New3DArray)

    [/autoit] [autoit][/autoit] [autoit]

    Func _Arraybefuellen()
    For $1 = 0 to 4
    For $2 = 0 to 4
    For $3 = 0 to 2
    $3DArray[$1][$2][$3] = $1&","&$2&","&$3
    Next
    Next
    Next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _FileWriteFromArray3D($sFile,$aArray,$sDelim="|")
    If UBound($aArray,0) <> 3 Then Return SetError(1)
    Local $iUbound_1 = UBound($aArray,1), $iUbound_2 = UBound($aArray,2), $iUbound_3 = UBound($aArray,3)
    Local $sRet
    For $i_1 = 0 to $iUbound_1-1
    For $i_3 = 0 to $iUbound_3-1
    For $i_2 = 0 to $iUbound_2-1
    $sRet &= $aArray[$i_1][$i_2][$i_3]
    If $i_2 < $iUbound_2-1 Then $sRet &= $sDelim
    Next
    If $i_3 < $iUbound_3-1 Then $sRet &= $sDelim & $sDelim
    Next
    If $i_1 < $iUbound_1-1 Then $sRet &= @CRLF
    Next
    FileDelete($sFile)
    FileWrite($sFile,$sRet)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _FileReadToArray3D($sFilePath,ByRef $aRet,$sDelim="|")
    $sRead = FileRead($sFilePath)
    Dim $aRet[100][100][100]
    $a_1 = StringSplit($sRead,@CRLF,1)
    ;~ _ArrayDisplay($a_1)
    If $a_1[0] >= UBound($aRet,1) Then
    ReDim $aRet[$a_1[0]+100][UBound($aRet,2)][UBound($aRet,3)]
    EndIf
    For $i_1 = 1 to $a_1[0]
    $a_3 = StringSplit($a_1[$i_1],$sDelim&$sDelim,1)
    ;~ _ArrayDisplay($a_3)
    If $a_3[0] >= UBound($aRet,3) Then
    ReDim $aRet[UBound($aRet,1)][UBound($aRet,2)][$a_3[0]+100]
    EndIf
    For $i_3 = 1 to $a_3[0]
    $a_2 = StringSplit($a_3[$i_3],$sDelim)
    ;~ _ArrayDisplay($a_2)
    If $a_2[0] >= UBound($aRet,2) Then
    ReDim $aRet[UBound($aRet,1)][$a_2[0]+100][UBound($aRet,2)]
    EndIf
    For $i_2 = 1 to $a_2[0]
    $aRet[$i_1][$i_2-1][$i_3-1] = $a_2[$i_2]
    ;~ ConsoleWrite($a_2[$i_2] & @CRLF)
    Next
    Next
    Next
    EndFunc

    [/autoit]
  • @Suebo: Coole Sache, werde ich gut gebrauchen können, jedoch habe ich mich in diesem Falle schon für die SQ-Lite Variante entschieden, da sie auch nicht so leicht zu Manipulieren ist, wie ne txt...
    Ich hoffe doch nicht das du das jetzt gerade für mich geschrieben hast :S
    Noch mal möchte ich auf die Frage hinweisen, ob jemand ein Programm zum auslesen solcher Datenbanken kennt! :D

  • Ich hoffe doch nicht das du das jetzt gerade für mich geschrieben hast :S


    Doch aber jetzt ist es in meiner UDF Sammlung - ich werd das bestmimt auch nochmal brauchen.

    Noch mal möchte ich auf die Frage hinweisen, ob jemand ein Programm zum auslesen solcher Datenbanken kennt! :D


    Eehm wenn du eine SQLite Datenbank benutzt, liest du diese einfach mit _SQlite_Query aus. Schau dir mal das Beispiel dazu in der Hilfe an.
    Ansonsten gibts nen Haufen tools wie zb. SQLite Manager.