Daten exkludieren?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Zerosurf
Beiträge: 131
Registriert: 11.10.2005 15:46

Daten exkludieren?

Beitrag von Zerosurf »

Code: Alles auswählen

  DataSection
    MapLabel:
    IncludeBinary "Data\map.data"
  EndDataSection

Hier wird eine Datei (map.data) inkludiert, aber wie kann ich diese Datei wieder exkludieren bzw als map.data in einen Ordner abspeichern?
PureBasic 6.00 | Windows 10 pro (x64)
Benutzeravatar
mk-soft
Beiträge: 3700
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Daten exkludieren?

Beitrag von mk-soft »

An die Adresse der Daten (Label) bekommt man mit den Fragezeichen "?Label"

Code: Alles auswählen



Procedure SaveIncludeData(FileName.s, StartOfData, EndOfData)
  Protected r1, file, LenOfData
  file = CreateFile(#PB_Any, FileName)
  If file
    LenOfData = EndOfData - StartOfData
    r1 = WriteData(file, StartOfData, LenOfData)
    CloseFile(file)
  EndIf
  ProcedureReturn r1
EndProcedure

DataSection
  MapDataStart:
  IncludeBinary "Data\map.data"
  MapDataEnd:
EndDataSection

Debug SaveIncludeData("MapData.Dat", ?MapDataStart, ?MapDataEnd)
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8679
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Daten exkludieren?

Beitrag von NicTheQuick »

Zum Beispiel so:

Code: Alles auswählen

EnableExplicit

Procedure StoreFile(path.s, *dataBegin, *dataEnd)
	Protected hFile.i = OpenFile(#PB_Any, path)
	
	If Not hFile
		ProcedureReturn #False
	EndIf
	
	WriteData(hFile, *dataBegin, *dataEnd - *dataBegin)
	
	CloseFile(hFile)
	
	ProcedureReturn #True
EndProcedure

Define path.s = GetHomeDirectory() + "map.data"
If StoreFile(path, ?MapLabel, ?MapLabelEnd)
	Debug "Map wurde erfolgreich in " + path + " gespeichert."
Else
	Debug "Konnte Map nicht speichern. Ist " + path + " schreibgeschützt?"
EndIf


DataSection
	MapLabel:
		IncludeBinary "Data\map.data"
	MapLabelEnd:
EndDataSection
edit: mk-soft war schneller und auch den Rückgabewert von WriteData berücksichtigt. :allright:
Bild
Benutzeravatar
Zerosurf
Beiträge: 131
Registriert: 11.10.2005 15:46

Re: Daten exkludieren?

Beitrag von Zerosurf »

Super, vielen Dank NicTheQuick und mk-soft!
Das hilft sehr!

:D
PureBasic 6.00 | Windows 10 pro (x64)
Antworten