Seite 3 von 3
Verfasst: 21.04.2008 21:24
von scholly
a14xerus hat geschrieben:scholly hat geschrieben:Die Sig müßte doch in allen seiner Post auftauchen, oder?
nöö.. man kann einstellen ob die sig im post stehen soll

Für jedes einzelne Posting? Ich dachte das gilt dann für alle

Verfasst: 21.04.2008 21:24
von Vermilion
Und vor allem kann man seine Signatur auch einfach leer lassen.
Verfasst: 21.04.2008 21:26
von X0r
Und vor allem kann man jetzt auch aufhören über Signatur-Funktionen in einem PHPBB Board zu labern.
Verfasst: 21.04.2008 21:27
von scholly
@Vermilion:
Dann wart mal ab, bis von Dir der 4. wissen will, was für eine PB-Version Du fährst
@X0r:
Abba nich, wenner hilfreiche Geister veräppelt.
Verfasst: 21.04.2008 21:28
von X0r
@Vermilion:
Welche PB Version hast du?
Verfasst: 21.04.2008 22:00
von NicTheQuick
Und was ist an meiner Methode jetzt so kompliziert gewesen?
Man schnappe sich eine TreeLinkedList, von denen es genügend hier im
Forum gibt und passe sie ein wenig für PB V3.3 an.
Oder man nehme zum Beispiel folgende Struktur und baue die Procedures
drumherum. Einen Parser schreiben finde ich ein bisschen überzogen, und vor allem langsam.
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
Verfasst: 21.04.2008 23:29
von NicTheQuick
Hab jetzt eine Kleinigkeit gebastelt. Nur das in Dateien schreiben konnte ich
jetzt noch nicht testen. Da hab ich gerade zu wenig Zeit für.
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)
Verfasst: 22.04.2008 08:19
von Vermilion
Für XOr und Scholly: Immer die neueste. Fertig. Kann man sich doch denken... wenn nichts anderes da steht, dann die default antwort.
Verfasst: 22.04.2008 15:10
von X0r
>Für XOr und Scholly: Immer die neueste. Fertig. Kann man sich doch denken... wenn nichts anderes da steht, dann die default antwort.
Aha. Das sagt der richtige. Du selber hast zur PB 4.1 Beta Zeit PB 4.00 genutzt.

Verfasst: 22.04.2008 17:32
von Vermilion
Ja, weil ich Betas nicht benutze (Standardmäßig). Nur fertige Versionen. Und von diesen winzigen Änderungen von 4.00 und 4.02 habe ich halt zuerst nichts mitgekriegt.