PureBasic Data

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Unsere Datenschutzerklärung wurde aktualisiert. Mit der Nutzung unseres Forums akzeptierst Du unsere Datenschutzerklärung. Du bestätigst zudem, dass Du mindestens 16 Jahre alt bist.

    • PureBasic Data

      Hi,
      wollte eine kleine Datei anstatt sie beim Start von der HDD einzulesen, direkt im Quellcode einbetten, um sie dann zur Laufzeit in den Speicher zu laden.

      Die Funktionen Data / DataSection / EndDataSection scheinen mir hierfür geeignet. (Gibt zwar noch andere Ansätze, spielt aber jetzt keine Rolle)

      Komischerweise stürzt der Compiler ab einer bestimmten Anzahl Bytes (mehr als 40000) ab.
      Die Frage ist:
      Wende ich das falsch an? Ist eine Bytegrenze gewollt? Habe ich einen Bug entdeckt?
      Mein kleines TestProg zeigt was gemeint ist. Sobald ich eine weitere Data Zeile hinzunehme, crasht der Compiler.

      Quellcode

      1. ;läd einen wav-sound direkt aus dem quellcode in den speicher und spielt ihn ab
      2. ;++ Momentan scheitert es bereits daran, die Daten zu verarbeiten ++
      3. Define.s ts ;teilstring
      4. Define.i le ;anzahl zeichen
      5. Read.s ts ;erster data string
      6. Debug ts
      7. Debug Len(ts)
      8. Read.s ts ;zweiter data string
      9. Debug ts
      10. Debug Len(ts)
      11. ;Usw... später als schleife - wie auch immer..
      12. DataSection
      13. Data.s "5249464688BA000057415645666D742010000000010001002256000044AC0000020010006461746164BA0000FFFE010000FF000001FF0000FF0101010001FF00010000FF00FE00FDFFFB01FA00F8FFF601F500F300F200F000EE00EDFFEB00EB01EAFFE902EAFFE901EA00EBFFEC00EE00F100F302F600F9FFFC0101FF040009FF0D00120117001BFF1EFF210126FF28002CFF2D00300132FF32013400340034FE3200320131002EFF2B0129FF25FF22011FFE1A0117FF11000E0109000401FF00FA01F500F100EC01E800E3FEDE01DC01D8FFD401D301D000CF00CD00CC00CC00CC01CCFFCC01CF00D0FFD200D502D8FFDB01DF00E301E7FFEB00F000F500FA00FFFF030009010E00120017001BFF1E01230027002A002D002F01310032FF3300340035FF340034FF320131FF2E002D002A0127FF22011FFE1A0117FF11000EFF080104FFFE01FAFFF502F100ECFFE701E401E0FFDB01D900D601D300D100CF00CE00CD00CC00CC00CD01CEFFCE01D1FFD201D600D900DC00E000E4FFE702EDFFF000F601FB0000FF040009010EFE120017011CFE1F00230027022AFE2C002FFF300033003400350035FF340034FF320131002FFF2C002A00270023FF1E011B00170012FF0D0009FF0301FF00FA00F501F1FFEB00E8FFE300E001DC00D9FFD501D300D101CF01CEFFCC01CDFFCC00CDFFCD01D000D100D401D6FFD800DD02E1FFE301E9FFEC00F2FFF601FBFFFF0005000A000F0013FF17011CFF1F00240027002AFF2CFF2E00310133FF33013400350034FF330132FE30002F002C00290226FE21011FFE1900160012010D0008000300FFFFF900F500F001EC00E700E300DF00DC00D800D501D300D1FFCE00CE01CD00CD00CD01CEFFCE00D000D201D400D701DAFFDC00E100E501E9FFED01F200F7FFFBFF000106000B000F0114FF17001D0021FF230128002BFF2D0130003200330034003500350035FF3300320031FF2E002C012901260022FF1D001A00160111010DFE070103FFFD00F900F501F000EB01E7FEE201DF00DCFFD701D501D3FFD002CFFFCD01CDFFCC02CDFFCD01CF00D000D2FFD401D701DA00DE00E200E600EA01EF00F3FFF700FD00020007FF0B01110015FF19001E01220026FE28012C002F003100330134FE3400360136FF34FF3400330131002FFF2C012AFF250023001FFF1900160011010D00080003FFFD00F900F400EF00EB01E700E3FFDE00DB01D800D500D300D101CF00CEFFCC00CD00CD01CEFFCE02D1FED202D5FFD701DB00DF01E300E700EB00F0FFF302F900FEFE020108FF0C0111FF15011BFF1E0123FF25002A012D002F0031FF320034FF3401360036003500340032FF30002EFF2B01290025FF20011D00190115FE0F010BFF05000101FDFFF701F300EE00EA00E500E101DE00DAFFD602D400D2FFCF00CF01CEFFCC01CD00CE00CE01D000D100D401D600D900DC00E001E400E800EDFFF000F600FBFFFF00050009010E00130117FF1B002001240027FE29002D00300132FE320135FF34003600350035FF320032FF2F022EFF2A0028FE230120FE1B0118FF13010FFF0901050001FFFB01F7FFF100ED00E902E5FFE000DD00DA00D701D400D2FFD001CF00CE01CE00CE01CE00CF00D002D2FFD300D7FFD901DD00E1FFE301E901EDFFF101F600FB0000FF040009FF0DFF110017011B001FFF2201260029FF2BFF2EFF2F01320033FF330034FF330133FE310031FF2E002C002AFF250123001F001B0017FF12010EFE090105000000FB01F6FFF1FFEC01E900E5FFE001DD00DA01D7FFD400D301D1FFCE02CF00CE00CE00CFFFCF01D1FFD200D500D700DA01DE00E101E500E9FFED00F201F701FBFFFFFF04010A000E00130017FE1A011F0123FF250129FF2B012EFF2F0132FE3201330034FF320033FF300030012EFF2A0029FF250022011EFF190116FF11010D0008FF0301FFFEF902F6FFF000ECFFE701E4FFDF01DDFFD801D600D400D2FFCF02CF00CE00CD00CE00CE01CF01D000D2FFD401D7FFD900DE00E102E5FFE902EEFFF200F800FC00010006000B001000140119FF1C0021FF240028012BFF2D0030FF310133FF3300350135003400330032FF2F012EFF2B012900250022001EFE190115FF10010CFF07010300FE00F9FFF302F000EB00E7FFE201DF00DC00D901D600D401D1FECF01CF01CE00CE01CE01CE00CF00D100D301D500D800DBFFDD00E201E6FEE901EE00F301F7FEFB01010006010AFF0EFF120018001C0020FF220027012AFF2B002F003000320033FF330034FF320133FF300030002E002B0128FF240022001E001A00160011000DFF07010400FFFFF901F5FFF001ED00E801E4FFE000DD00DA02D700D5FFD200D101D0FFCF02CF00CFFFCF00D101D2FFD301D700D900DCFFDE00E300E700EB01EF00F4FFF701FDFF000006010B000F0014FF17FF1B002000240127002A002DFF2E00310033FF33FF3300340034FF320032FF30FF2D002C0129FF250123FE1E001B0116FF11000D01080004FFFE00FA01F5FFEF01EC00E700E3FFDE01DCFFD802D6FFD201D1FFCF01CE01CE00CDFFCC01CE00CFFFD001D300D500D800DB00DE01E200E601EA01EFFFF201F800FD0102FE06010CFF100115001A001E002200260029FF2B002F003101330034FF3401360036FF3400350033FF30002F002DFF290126FF22021FFF1900160011FE0B0108FF0201FEFFF800F4FFEE01EBFFE5FFE101DEFFDA02D7FFD301D200D001CE00CDFFCC01CD01CD00CE00CF00D101D300D501D801DBFFDE00E300E700EC00F002F500FA00FF00040009000E0013FF17001C0120FF230128002B002EFF300133FF33FF350236FF36FF3500360135FE32FF30002F012C002900250021001DFF180114FE0E020AFF040000FFFA01F600F1FFEC01E800E4FFDF00DC01D800D501D3FFCF00CE02CD00CC00CB00CB01CCFFCC00CE00D002D200D500D801DB00DFFFE200E701ECFFF000F601FB00FF0105FF09FF0E01130118FE1C012100250028012BFF2E0131FF32003500360037FF36FF360136FF34FF330031012F002C0029FF240022FF1C00190014010FFF090005000000FB00F600F102ECFFE701E300DFFFDA01D800D5FFD100D000CE01CC00CB01CB00CB00CBFFCB01CDFFCE01D1FFD302D7FFD9FFDD01E200E600EA00EF00F401F9FFFD00030008FF0CFF110216001BFF1EFF220127002AFF2CFF2E0132FE320234FE340136FF350035FF330133FF30002E002C0029FF240021001D01190015FF0F000B0106FF0001FCFFF701F300EE01EAFFE400E102DEFFD900D700D500D200D002CF00CE00CD00CDFFCD00CF01D001D1FFD301D600D900DC00E001E400E801ECFFF001F5FFF901FF00030108000DFF110116001A001FFF21FF250129FF2B012E0030FE3101330034FF340034FF3300330131FF2E002D012B0027FE230020001C0118FF12010FFF090105FFFF00FB01F7FFF101ED00E9FFE300E000DD02D9FFD501D300D101CFFFCD01CD00CC00CC01CD00CDFFCE01D0FFD101D500D800DB00DF00E3FFE601EB00F000F501FA00FF0004FF08000DFF110017011BFF1FFF220027002B002DFF2F0032FF33003501360036FF35003600340133FF30FF2E002C002900250122FF1D001900150010000B01060002FFFCFFF700F300EF00EA00E600E200DE00DB00D801D500D301D100CFFFCD02CE00CE00CE00CF00D000D201D400D6FFD800DC01E0FFE302E8FFEB00F101F500FA00FF0004FF08000DFF110117FF1A011F0023FF250029FF2B002F00310032FF32003400340134FF32FF310031012FFE2C012A0126FF22FF1E011CFF160113FF0D000A0005FFFF00FC00F701F201EE00EA01E6FFE101DF00DB01D900D6FED302D200D1FFCF02D0FFCF01D000D1FFD201D4FFD600D901DC01DF00E300E701EB00EFFFF301F801FD0001FF05010B000F0013FF17001C0020FF2200260029002BFF2D002F003100320132FF310032FF300030002EFF2B002AFF260124FF20001D0119FF140111FE0B0108FF02FFFD00FA00F500F100ED02E900E5FFE001DE00DBFFD702D6FED300D202D1FFD000D001D101D100D2FFD301D5FFD701DA01DDFFE001E400E800EC00F000F400F901FD00020106000BFF0E0013FF17001CFF1E02230026FE28002B002DFF2EFF2F0131FF31003201310031FF2E002EFE2B01290027FF230120001DFE1800150010020C0008FF0200FE01FA00F5FFF000ED01E901E5FFE000DE00DB01D9FFD500D400D301D202D1FFD000D101D200D300D4FFD500D801DBFFDD01E101E400E8FFEB01F000F5FFF801FE01020007FF0A0110FF130018FF1B0120FE2201260029FF2B002E012FFF300131FF3100320131FF2F002FFF2C002B012800250022011EFF190017FE11010E01090004FFFF00FBFFF501F2FFEC01E900E5FFE002DEFFDA01D8FFD401D3FFD001D0FFCFFFCE01D001D000D1FFD101D400D700D900DC00DFFFE200E700EA00EF01F300F700FCFFFF0005000A000E00120016001A001E0021FF230127002AFF2B002DFF2E0030FF2F0130FF2FFF2E022EFF2C002B0029002600240020FF1C0119FF140111000DFF070004000000FB00F702F3FFEE01EBFFE601E300E0FFDC01DA00D8FFD501D400D301D2FFD101D200D201D300D502D600D8FEDA00DD00E100E401E800EBFFEEFFF200F800FC0000FF040109FF0D00120016011AFE1C00210124FF26FF28002B002D002E002F01300030FF2F002FFF2D002C002A01280025FE21011F001BFF170114FF0F000B0007000300FE01FA00F501F1FFEC01E901E600E2FEDE00DC00DA01D8FFD500D501D400D301D300D3FFD300D501D600D801DAFFDC00E002E3FFE501EAFFED00F200F600FA01FE0003FF06000B000F00130017FF1A001E01210024FF260129002BFF2CFF2D002FFF2E012F002FFF2D002DFF2B002A0128FF240122FE1E001C011800140010000CFF070003FFFE00FA00F601F200EEFFE901E601E2FFDE01DC00D9FFD601D5FFD201D200D100D101D1FFD001D2FFD300D502D700DA00DD00E000E3FFE600EB00EFFFF300F800FD00020006010BFF0E0114FE17011C0020FF230027002AFF2B002FFF3000320033FF320033013300320031FE2F022E002BFF27FF240022001EFF1900160012010D00080004FFFE01FAFFF501F100ED00E9FFE400E101DEFFD901D800D501D3FFD101D101D0FFCE00D001D000D1FFD201D401D7FFD800DC00E002E3FFE600EC00F000F400F901FE00030007010C0111FE140019011E0021FE240028002BFF2C012FFF3001320033FF3100310030002DFF2900260121001C00170111FF0A000501FFFFF901F500F000EC01E801E600E4FFE200E200E301E400E7FFE801EDFFF002F5FFF901FFFF03FF08000E01110014FF1500170117FF160016FF130012000F010CFF0800050001FFFB00F801F4FFEF01EC00E800E501E300E100E001DF00DFFFDF01E100E400E701EA00EEFFF200F900FE0004000B0111FF17FF1D0024022AFE2E00340038013CFF3D014000410040FF3EFF3C01390035FE2F012A0022001B011200090100FFF5FFEC00E301D900D001C7FFBE01B700B001AA01A501A2019FFF9D019E009F00A200A601ACFFB100BA01C2"
      14. Data.s "weitere 8000 Zeichen..."
      15. Data.s "usw.. "
      16. EndDataSection
      17. End
      Alles anzeigen
      data_test.pb.zip das gleiche nochmal als Anhang. Da sind schon alle Data-Zeilen fertig (testet sich leichter)
      hier im Codefenster gehen nur max. 10.000 Zeichen.
      Gruß Jörg

      Ideen gibt es viele - man muß sie nur haben...
      Win7-Pro / Linux Mint
    • Ich will jetzt gar nicht Wissen, wieso als String und wieso als Datazeile, weil das macht man sowieso anders!
      DataSection und EndDataSection ist schon mal richtig. Da kommt dann IncludeBinary:

      Quellcode

      1. Syntax
      2. IncludeBinary "Dateiname"
      3. Beschreibung
      4. IncludeBinary fügt die genannte Datei an der aktuellen Stelle in das Programm ein. Das Einfügen sollte dabei innerhalb eines Data-Blocks erfolgen.
      5. Beispiel
      6. DataSection
      7. MapLabel:
      8. IncludeBinary "Data\map.data"
      9. EndDataSection
      10. Dieser Befehl ist insbesondere nützlich im Zusammenhang mit den Catch-Befehlen (gegenwärtig gibt es CatchImage(), CatchSound(), CatchSprite()) zum Einfügen von Bildern, Sounds, Sprites etc. in das Executable.
      Alles anzeigen
      ;-)
      Gruß Thomas

      "Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."
      ComputerInfo für PPF
    • Vielen Dank - sowas hab ich gesucht. Funktioniert.
      Die Quelldatei muß nur noch zum Zeitpunkt des kompilieren vorliegen.

      Auf diese Funktion mußte aber erstmal kommen (wenn man nicht weiß, das sie existiert). Ein Link dahin, aus dem Data-Kapitel hätte geholfen ;-)
      Gruß Jörg

      Ideen gibt es viele - man muß sie nur haben...
      Win7-Pro / Linux Mint
    • ts-soft schrieb:

      Ich will jetzt gar nicht Wissen, wieso als String und wieso als Datazeile
      ich möchte es aber trotzdem verraten :-)

      Datazeile deshalb, weil es sich ja auch um Daten handelt und nicht um Bestandteil des Codes.
      Hätte das auch als normale stringzuweisungen in stringvariablen je 8000 Zeichen stopfen können und diese dann zur Laufzeit verarbeiten und in den Speicher als Sound zusammenbauen können.

      Also anstatt Data.s "...." einfach block1$ = "..." usw.

      Aber dann hätte ich:
      1x die Daten im Quellcode
      1x die Daten in der Stringvariable
      1x die Daten als ursprünglicher, zusammenhängender Binärblock
      1x die Daten als geladener Sound
      im Speicher

      Ok - die Strings und den Binärblock hätte anschließend wieder freigeben können. Fand die Idee mit Data aber trotzdem gut und ist bestimmt auch schneller.


      String deshalb, weil ich die Bytewerte der .wav Datei als Hex Schreibweise (immer 2 Zeichen pro Wert) im Code ablegen wollte.
      Also die 2-er Hexcodes als 8000 Zeichen langen String zusammenkleben (ohne Trennzeichen).
      Das hat mir die zig-tausend Kommas erspart, weil ich ja die Hexcodes immer schön in einer Schleife nacheinander (immer 2 Zeichen) in ursprüngliche Bytewerte wandeln und in den Speicher schreiben kann.


      Aber mal von all dem abgesehen - warum crasht aber der Compiler bei über 40.000 Zeichen im DataSection Block? Von der Syntax her, habe ich das ja korrekt angewendet. Deshalb der Verdacht, das ich vllt. einen Fehler aufgedeckt haben könnte.
      Gruß Jörg

      Ideen gibt es viele - man muß sie nur haben...
      Win7-Pro / Linux Mint
    • Schon mal von gehört, das Strings in PB nullterminiert sind, bzw. in Unicode doppelnullterminiert. Desweiteren, liest er direkt (normal als UTF-8) aus dem Text, also sind Steuercodes etwas problematisch. Die Umwandlung von UTF-8 (Source-Datei) nach Unicode (Memory) erfolgt "on the fly".

      PS: So bekommt Du nie

      JörgG schrieb:

      1x die Daten als ursprünglicher, zusammenhängender Binärblock
      1x die Daten als geladener Sound
      Das geht nur mit z.B. byte, long, quad

      PSS: Wenn etwas unverändert in den Source eingefügt wird, dann gehört das zu den CompilerDirektiven.
      Gruß Thomas

      "Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."
      ComputerInfo für PPF