Seite 4 von 6
Verfasst: 08.09.2007 12:26
von Scarabol
Hi Leute,
kann man für die Standard IDE Plugins oder sowas schreiben, oder mit einem Macro tricksen?
Gruß
Scarabol
Verfasst: 24.02.2008 05:30
von STARGÅTE
Tachchen Nic,
ich habe auch mal n Version geschrieben, die bei Arrays keine Rekursion benutzt (sonder LL-Elemente).
Daruch werden ganze Arrays die nur aus b,c,l,f,q,d bestehen auch komplett als Data geschrieben/gelesen.
Vllt ist diese Variante ja schneller, man kann es leider nicht richtig Testen, da die Festplatte zu unterschiedliche Schreibgeschwindigkeit hat.
Außerdem schreibe ich die Strings anders in die Datei, ....
Gucks dir einfach mal an:
Code: Alles auswählen
Structure AllTypes
StructureUnion
b.b : c.c : w.w : l.l : f.f : d.d : q.q : s.s
EndStructureUnion
EndStructure
Structure StructureArrayPBI
Feld.l
Index.l
EndStructure
Global NewList StructureArrayPBI.StructureArrayPBI()
Procedure WriteStructure(File, *Value.AllTypes, *Struktur.Character)
While *Struktur\c
Select *Struktur\c
Case '[' :
AddElement(StructureArrayPBI())
Felder = Val(PeekS(*Struktur+1))
StructureArrayPBI()\Feld = Felder
StructureArrayPBI()\Index = *Struktur+Len(Str(Felder))
*Struktur = StructureArrayPBI()\Index
Case ']'
StructureArrayPBI()\Feld - 1
If Not StructureArrayPBI()\Feld
DeleteElement(StructureArrayPBI())
Else
*Struktur = StructureArrayPBI()\Index
EndIf
Case 'b' : DataLength + 1
Case 'c' : DataLength + SizeOf(Character)
Case 'w' : DataLength + 2
Case 'l' : DataLength + 4
Case 'f' : DataLength + 4
Case 'q' : DataLength + 8
Case 'd' : DataLength + 8
Case 's' :
If DataLength
WriteData(File, *Value, DataLength)
*Value + DataLength
DataLength = 0
EndIf
WriteString(File,*Value\s) : WriteByte(File,0)
*Value + 4
EndSelect
*Struktur + 1
Wend
If DataLength
WriteData(File, *Value, DataLength)
EndIf
EndProcedure
Procedure ReadStructure(File, *Value.AllTypes, *Struktur.Character)
While *Struktur\c
Select *Struktur\c
Case '[' :
AddElement(StructureArrayPBI())
Felder = Val(PeekS(*Struktur+1))
StructureArrayPBI()\Feld = Felder
StructureArrayPBI()\Index = *Struktur+Len(Str(Felder))
*Struktur = StructureArrayPBI()\Index
Case ']'
StructureArrayPBI()\Feld - 1
If Not StructureArrayPBI()\Feld
DeleteElement(StructureArrayPBI())
Else
*Struktur = StructureArrayPBI()\Index
EndIf
Case 'b' : DataLength + 1
Case 'c' : DataLength + SizeOf(Character)
Case 'w' : DataLength + 2
Case 'l' : DataLength + 4
Case 'f' : DataLength + 4
Case 'q' : DataLength + 8
Case 'd' : DataLength + 8
Case 's' :
If DataLength
ReadData(File, *Value, DataLength)
*Value + DataLength
DataLength = 0
EndIf
*Value\s = ReadString(File)
*Value + 4
EndSelect
*Struktur + 1
Wend
If DataLength
ReadData(File, *Value, DataLength)
EndIf
EndProcedure
btw. n Frage, ist SizeOf() eine Procedure oder ein Macro, denn wenn das programm immer wieder neu "guckt" wie groß eine LONG ist wäre eine einfache 4 schneller ^^
Re: Write-, Read-, CopyStructure (2. Update)
Verfasst: 13.12.2009 15:17
von NicTheQuick
Das muss ein Makro sein und vom Präprozessor abgearbeitet werden, denn zur Laufzeit gibt es keine Typen mehr.
Hm... Ich schätze nach 4 Jahren ist dir das sowieso schon klar.

Re: Write-, Read-, CopyStructure (2. Update)
Verfasst: 24.12.2009 19:51
von mk-soft
Hi Nic,
super reaktionszeit auf eine Frage...
Sind ja nur knapp 10 Monate vergangen.

Re: Write-, Read-, CopyStructure (2. Update)
Verfasst: 24.12.2009 20:25
von Kaeru Gaman
mit der neuen Version müßte man das sowieso vielleicht umschreiben, da man jetzt mit = Kopien von Structs erzeugen kann.
... oder ganz aufgeben, wenn es nicht mehr kann.
Re: Write-, Read-, CopyStructure (2. Update)
Verfasst: 24.12.2009 20:39
von STARGÅTE
super reaktionszeit auf eine Frage...
Sind ja nur knapp 10 Monate vergangen.
er hatte mir ja damals schon n PN geschickt

Re: Write-, Read-, CopyStructure (2. Update)
Verfasst: 25.12.2009 04:37
von NicTheQuick
STARGÅTE hat geschrieben:er hatte mir ja damals schon n PN geschickt

Das wusste ich auch nicht mehr, siehste mal...
Re: Write-, Read-, CopyStructure (2. Update)
Verfasst: 26.04.2010 20:29
von NicTheQuick
Ich habe meine Funktionen erweitert auf die neuste und noch nicht existente PB-Version.
Siehe "Edit 4" im ersten Post.
Re: Write-, Read-, CopyStructure (2. Update)
Verfasst: 26.04.2010 20:32
von ts-soft
NicTheQuick hat geschrieben:Ich habe meine Funktionen erweitert auf die neuste und noch nicht existente PB-Version.
Siehe "Edit 4" im ersten Post.
Die wird dann aber auch nicht funktionieren, weil s.s wird in structureunion verboten bleiben!
*s wird funktionieren!
Gruß
Thomas
Re: Write-, Read-, CopyStructure (2. Update)
Verfasst: 26.04.2010 21:02
von NicTheQuick
Jetzt funktioniert es. Habe ein bisschen getrickst.
