Für jedes einzelne Posting? Ich dachte das gilt dann für allea14xerus hat geschrieben:nöö.. man kann einstellen ob die sig im post stehen sollscholly hat geschrieben:Die Sig müßte doch in allen seiner Post auftauchen, oder?

Code: Alles auswählen
; celements --- FS --- *files --> FS_ARRAY --- e[n] --> FS_ELEMENT
; |
; |-- type
; |
; |-- file --> FS_FILE --- name
; |
; '-- folder --> FS_FOLDER
; |
; |-- name
; |-- celements
; '-- *files --> (FS_ARRAY)
Structure FS_FILE
*name.StringP ;siehe meine StringPointer-Include
EndStructure
Structure FS_FOLDER
*name.StringP
celements.l
*files.FS_ARRAY
EndStructure
Structure FS_ELEMENT
type.l
StructureUnion
*file.FS_FILE
*folder.FS_FOLDER
EndStructureUnion
EndStructure
Structure FS_ARRAY
e[0].FS_ELEMENT
EndStructure
Structure FS
celements.l
*files.FS_ARRAY
EndStructure
Code: Alles auswählen
Enumeration
#FS_File
#FS_Folder
EndEnumeration
Structure FS_ELEMENT
type.l
*name
*folder.FS_FOLDER
EndStructure
Structure FS_ARRAY
e.FS_ELEMENT[0]
EndStructure
Structure FS_FOLDER
celements.l
*files.FS_ARRAY
*eparent.FS_ELEMENT
*parent.FS_FOLDER
EndStructure
Procedure FS_New()
Protected *FS.FS_FOLDER
*FS = AllocateMemory(SizeOf(FS_FOLDER))
ProcedureReturn *FS
EndProcedure
Procedure.l FS_Count(*FS.FS_FOLDER)
ProcedureReturn *FS\celements
EndProcedure
Procedure.l FS_NewFile(*FS.FS_FOLDER, name.s)
Protected *tmp, *name
*name = AllocateMemory(Len(name) + 1)
If Not *name : ProcedureReturn #False : EndIf
*tmp = ReAllocateMemory(*FS\files, (*FS\celements + 1) * SizeOf(FS_ELEMENT))
If Not *tmp : FreeMemory(*name) : ProcedureReturn #False : EndIf
*FS\files = *tmp
With *FS\files\e[*FS\celements]
\type = #FS_File
\name = *name
PokeS(\name, name)
\folder = 0
EndWith
*FS\celements + 1
ProcedureReturn *FS\celements
EndProcedure
Procedure.l FS_NewFolder(*FS.FS_FOLDER, name.s)
Protected *tmp, *name, *folder
*name = AllocateMemory(Len(name) + 1)
If Not *name : ProcedureReturn #False : EndIf
*folder = AllocateMemory(SizeOf(FS_FOLDER))
If Not *folder : FreeMemory(*name) : ProcedureReturn #False : EndIf
*tmp = ReAllocateMemory(*FS\files, (*FS\celements + 1) * SizeOf(FS_ELEMENT))
If Not *tmp : FreeMemory(*name) : FreeMemory(*folder) : ProcedureReturn #False : EndIf
*FS\files = *tmp
*FS\files\e[*FS\celements]\type = #FS_Folder
*FS\files\e[*FS\celements]\name = *name
PokeS(*FS\files\e[*FS\celements]\name, name)
*FS\files\e[*FS\celements]\folder = *folder
*FS\files\e[*FS\celements]\folder\parent = *FS
*FS\files\e[*FS\celements]\folder\eparent = *FS\files\e[*FS\celements]
*FS\celements + 1
ProcedureReturn *folder
EndProcedure
Procedure FS_OpenFolder(*FS.FS_FOLDER, position.l)
If position < 0 Or position >= *FS\celements : ProcedureReturn #False : EndIf
If *FS\files\e[position]\type <> #FS_Folder : ProcedureReturn #False : EndIf
ProcedureReturn *FS\files\e[position]\folder
EndProcedure
Procedure FS_CloseFolder(*FS.FS_FOLDER)
If Not *FS\parent : ProcedureReturn #False : EndIf
ProcedureReturn *FS\parent
EndProcedure
Procedure FS_Delete(*FS.FS_Folder, position.l)
Protected i.l
If position < 0 Or position >= *FS\celements : ProcedureReturn #False : EndIf
FreeMemory(*FS\files\e[position]\name)
If *FS\files\e[position]\type = #FS_Folder
For i = 0 To *FS\files\e[position]\folder\celements - 1
FS_Delete(*FS\files\e[position]\folder, i)
Next
EndIf
*FS\celements - 1
While position < *FS\celements
*FS\files\e[position]\type = *FS\files\e[position + 1]\type
*FS\files\e[position]\name = *FS\files\e[position + 1]\name
*FS\files\e[position]\folder = *FS\files\e[position + 1]\folder
position + 1
Wend
If *FS\celements
*FS\files = ReAllocateMemory(*FS\files, *FS\celements * SizeOf(FS_ELEMENT))
Else
FreeMemory(*FS\files)
EndIf
ProcedureReturn #True
EndProcedure
Procedure.s FS_Name(*FS.FS_Folder, position.l)
If position < 0 Or position >= *FS\celements : ProcedureReturn "" : EndIf
ProcedureReturn PeekS(*FS\files\e[position]\name)
EndProcedure
Procedure FS_SetName(*FS.FS_FOLDER, position.l, name.s)
Protected *tmp
If position < 0 Or position >= *FS\celements : ProcedureReturn #False : EndIf
*tmp = ReAllocateMemory(*FS\files\e[position]\name, Len(name) + 1)
If Not *tmp : ProcedureReturn #False : EndIf
*FS\files\e[position]\name = *tmp
PokeS(*FS\files\e[position]\name, name)
ProcedureReturn #True
EndProcedure
Procedure FS_Type(*FS.FS_FOLDER, position.l)
If position < 0 Or position >= *FS\celements : ProcedureReturn #False : EndIf
ProcedureReturn *FS\files\e[position]\type
EndProcedure
CompilerIf 0
Macro ReadData(a, b)
ReadData(0, a, b)
EndMacro
Macro ReadLong()
ReadLong(0)
EndMacro
Macro WriteLong(a)
WriteLong(0, a)
EndMacro
Macro WriteString(a)
WriteString(0, a)
EndMacro
Procedure FS_Write(*FS.FS_FOLDER)
Protected i.l
WriteLong(*FS\celements)
For i = 0 To *FS\celements - 1
WriteLong(*FS\files\e[i]\type)
WriteLong(Len(*FS\files\e[i]\name))
WriteString(PeekS(*FS\files\e[i]\name))
If *FS\files\e[i]\type = #FS_Folder
FS_Write(*FS\files\e[i]\folder)
EndIf
Next
EndProcedure
Procedure FS_Read(*FS.FS_FOLDER)
Protected c.l, i.l, type.l, length.l, name.s, *tmp
If Not *FS
*FS = AllocateMemory(SizeOf(FS_FOLDER))
If Not *FS : ProcedureReturn #False : EndIf
EndIf
c = ReadLong() - 1
For i = 0 To c
type = ReadLong()
length = ReadLong()
name = Space(length)
ReadData(@name, length)
Select type
Case #FS_File
If Not FS_NewFile(*FS, name) : ProcedureReturn #False : EndIf
Case #FS_Folder
*tmp = FS_NewFolder(*FS, name)
If *tmp
If Not FS_Read(*tmp) : ProcedureReturn #False : EndIf
EndIf
EndSelect
Next
ProcedureReturn #True
EndProcedure
CompilerEndIf
Procedure.s FS_Path(*FS.FS_FOLDER, position.l)
Protected path.s = "\"
If position >= 0 And position < *FS\celements
path + PeekS(*FS\files\e[position]\name)
EndIf
While *FS\parent And *FS\eparent
path = "\" + PeekS(*FS\eparent\name) + path
*FS = *FS\parent
Wend
ProcedureReturn path
EndProcedure
Procedure FS_Debug(*FS.FS_FOLDER)
Protected c.l, i.l
For i = 0 To FS_Count(*FS) - 1
Select FS_Type(*FS, i)
Case #FS_File
Debug FS_Path(*FS, i)
Case #FS_Folder
Debug FS_Path(*FS, i) + "\"
FS_Debug(FS_OpenFolder(*FS, i))
EndSelect
Next
EndProcedure
Define *FS.FS_FOLDER
*FS = FS_New()
;1 Datei und 2 Order anlegen
FS_NewFile(*FS, "autoexec.bat")
FS_NewFolder(*FS, "Programme")
FS_NewFolder(*FS, "Windows")
;Ordner an Position 2 öffnen
*FS = FS_OpenFolder(*FS, 2)
;2 Dateien und 1 Ordner anlegen
FS_NewFile(*FS, "win.com")
FS_NewFile(*FS, "win.ini")
FS_NewFolder(*FS, "Temp")
;Ordner an Position 2 öffnen
*FS = FS_OpenFolder(*FS, 2)
;2 Dateien anlegen
FS_NewFile(*FS, "tempdatei.dat")
FS_NewFile(*FS, "altes setup.exe")
;Ordner wieder schließen
*FS = FS_CloseFolder(*FS)
;Ordner wieder schließen
*FS = FS_CloseFolder(*FS)
FS_Debug(*FS)