Text-Dateien aus dem Data-Block einlesen[umständlich gelöst]
Text-Dateien aus dem Data-Block einlesen[umständlich gelöst]
Hi zusammen,
Ich habe ein Problem, bei dem ihr mir vielleicht helfen könnt:
Ich kann mit IncludeBinary verschiedene Dateien in die DataSection einfügen. Unter Anderem möchte ich nun einige Textdateien einfügen, die (erstellt aus einem anderen Programm) die Signaturen (SHA1, MD5) von anderen Dateien enthält. Das Programm soll nun diese Dateien nun während der Laufzeit einlesen können. Ich möchte keine temporären Dateien anlegen..
Wie stelle ich das am Besten an? Irgendwelche Vorschläge?
Danke und MfG
Ich habe ein Problem, bei dem ihr mir vielleicht helfen könnt:
Ich kann mit IncludeBinary verschiedene Dateien in die DataSection einfügen. Unter Anderem möchte ich nun einige Textdateien einfügen, die (erstellt aus einem anderen Programm) die Signaturen (SHA1, MD5) von anderen Dateien enthält. Das Programm soll nun diese Dateien nun während der Laufzeit einlesen können. Ich möchte keine temporären Dateien anlegen..
Wie stelle ich das am Besten an? Irgendwelche Vorschläge?
Danke und MfG
Zuletzt geändert von KatSeiko am 05.09.2012 12:04, insgesamt 1-mal geändert.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Text-Dateien aus dem Data-Block einlesen
Code: Alles auswählen
; ==============================================================
; Created on: 04/09/2012 14:44
;
; App/Lib-Name: Demo
; Author: Thomas <ts-soft> Schulz
; Version: 1.0
; Compiler: PureBasic 5.00 Beta 2 (Linux - x64)
; ==============================================================
EnableExplicit
DataSection
TextFile:
IncludeBinary "text.txt"
EndDataSection
Debug PeekS(?TextFile)PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- NicTheQuick
- Ein Admin
- Beiträge: 8838
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Text-Dateien aus dem Data-Block einlesen
Wäre das nicht sicherer?
Sonst liest er noch nach der Textdatei Müll ein?
Code: Alles auswählen
EnableExplicit
DataSection
TextFile:
IncludeBinary "text.txt"
TextFileEnd:
EndDataSection
Debug PeekS(?TextFile, ?TextFileEnd - ?TextFile)- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Text-Dateien aus dem Data-Block einlesen
Nach meiner bisherigen Erfahrung ist es nicht nötig, aber sicherer ist es schon, weil es gibtNicTheQuick hat geschrieben:Wäre das nicht sicherer?
ja noch Murphys Gesetz
Codierung ist in dem Beispiel auch nicht berücksichtigt.
Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Text-Dateien aus dem Data-Block einlesen
Hi,
Sagen wir, die Textdatei ist die hier:
Die Datei ist nun über IncludeBinary in der DataSection eingebunden.
Wie lese ich das in drei Variablen ein?
Danke und MfG
Sagen wir, die Textdatei ist die hier:
Code: Alles auswählen
signature.txt
a3a07711bc3d7165b99b7e14f6565bde2dbc60f9
17b157ca38dcee6857f87e15b61655a4Wie lese ich das in drei Variablen ein?
Danke und MfG
Re: Text-Dateien aus dem Data-Block einlesen
Wie meine Vorposter es aufzeigten.
Den String (also die Zeilen + Umbrüche) kannst du dann mit StringField beim Umbruch zerteilen und in deinen Variablen speichern.
Du kannst auch "mein" PeekSN() nutzen.
Den String (also die Zeilen + Umbrüche) kannst du dann mit StringField beim Umbruch zerteilen und in deinen Variablen speichern.
Du kannst auch "mein" PeekSN() nutzen.
Code: Alles auswählen
CompilerIf Defined(CharacterArray, #PB_Structure) = #False
Structure CharacterArray : c.c[0] : EndStructure
CompilerEndIf
Procedure.s PeekSN(*Buffer.CharacterArray, *BufferPointer.Integer)
Protected String.s, Index.i, EndOfLineLength.i = 1
While *Buffer\c[Index]
If *Buffer\c[Index] = #CR And *Buffer\c[Index+1] = #LF ; Windows
EndOfLineLength = 2
Break
ElseIf *Buffer\c[Index] = #LF Or *Buffer\c[Index] = #CR ; Unix OR Mac
Break
EndIf
Index + 1
Wend
*BufferPointer\i = *Buffer + SizeOf(Character)*(Index+EndOfLineLength)
ProcedureReturn PeekS(*Buffer, Index)
EndProcedure
*Buffer = ?Signature
Debug PeekSN(*Buffer, @*Buffer)
Debug PeekSN(*Buffer, @*Buffer)
Debug PeekSN(*Buffer, @*Buffer)
DataSection
Signature:
Data.s "signature.txt"+#CRLF$+"a3a07711bc3d7165b99b7e14f6565bde2dbc60f9"+#CRLF$+"17b157ca38dcee6857f87e15b61655a4"
EndDataSection
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- NicTheQuick
- Ein Admin
- Beiträge: 8838
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Text-Dateien aus dem Data-Block einlesen
@Stargate:
Wieso so kompliziert mit zwei Parametern?
Wieso so kompliziert mit zwei Parametern?
Code: Alles auswählen
CompilerIf Defined(CharacterArray, #PB_Structure) = #False
Structure CharacterArray : c.c[0] : EndStructure
CompilerEndIf
Procedure.s PeekSN(*BufferPointer.Integer)
Protected String.s, Index.i, EndOfLineLength.i = 1
Protected *Buffer.CharacterArray = *BufferPointer\i
While *Buffer\c[Index]
If *Buffer\c[Index] = #CR And *Buffer\c[Index+1] = #LF ; Windows
EndOfLineLength = 2
Break
ElseIf *Buffer\c[Index] = #LF Or *Buffer\c[Index] = #CR ; Unix OR Mac
Break
EndIf
Index + 1
Wend
*BufferPointer\i = *Buffer + SizeOf(Character)*(Index+EndOfLineLength)
ProcedureReturn PeekS(*Buffer, Index)
EndProcedure
*Buffer = ?Signature
Debug PeekSN(@*Buffer)
Debug PeekSN(@*Buffer)
Debug PeekSN(@*Buffer)
DataSection
Signature:
Data.s "signature.txt"+#CRLF$+"a3a07711bc3d7165b99b7e14f6565bde2dbc60f9"+#CRLF$+"17b157ca38dcee6857f87e15b61655a4"
EndDataSectionRe: Text-Dateien aus dem Data-Block einlesen
Ich bin grad am Arbeitsplatz.. Würde das hier funktionieren:
Code: Alles auswählen
CompilerIf Defined(CharacterArray, #PB_Structure) = #False
Structure CharacterArray : c.c[0] : EndStructure
CompilerEndIf
Procedure.s PeekSN(*BufferPointer.Integer)
Protected String.s, Index.i, EndOfLineLength.i = 1
Protected *Buffer.CharacterArray = *BufferPointer\i
While *Buffer\c[Index]
If *Buffer\c[Index] = #CR And *Buffer\c[Index+1] = #LF ; Windows
EndOfLineLength = 2
Break
ElseIf *Buffer\c[Index] = #LF Or *Buffer\c[Index] = #CR ; Unix OR Mac
Break
EndIf
Index + 1
Wend
*BufferPointer\i = *Buffer + SizeOf(Character)*(Index+EndOfLineLength)
ProcedureReturn PeekS(*Buffer, Index)
EndProcedure
*Buffer = ?Signature
Debug PeekSN(@*Buffer)
Debug PeekSN(@*Buffer)
Debug PeekSN(@*Buffer)
DataSection
Signature:
IncludeBinary "signature.txt"
EndDataSection- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Text-Dateien aus dem Data-Block einlesen
Nette Proceduren, aber das ein BOM vorhanden sein könnte, bzw. eine andere Codierung vorliegt, wird nicht
berücksichtigt
, schließlich möchte er ja eine Textdatei includieren und keine Data.s!
berücksichtigt
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Text-Dateien aus dem Data-Block einlesen
Leider hat PureBasic keine Funktion wie "CatchFile" in der Funktionsweise wie CatchXML.. 

