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. :mrgreen:

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. :roll:

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 :wink:

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 :wink:
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. :wink: