[[library:index]] tdbengine Wiki

Route:


Offene Funktionsbibliothek


splitstring()
<doku>
<about>Ein String 's' wird mittels Trenner 'trenner' in Teilstücke zerlegt.
Die Teile werden im Array 'ergebnis' abgelegt.

Der Rückgabewert ist die Anzahl der Teilstücke.
Beispiel:
<code>
var erg : String[]
var anz : integer = splitstring('ein/geteilter/string','/',erg)
</code>
</about>
</doku>

==========================================================================
Procedure splitstring(s : String; trenner : String; Var ergebnis : String[]):integer
==========================================================================


Var anz , a1: Integer = Scan(trenner,s)+1 Var posi : Integer Var i : Integer = -1

InitArray(ergebnis[anz]) While anz-->=0 Do posi := Pos(trenner,s) ergebnis[i++] := s[1,posi-1] s:=s[posi+1,255] End
return a1
ENDPROC



dbtoxml()
<doku>
<about>Selektionsergebnis in eine XML-Datei schieben zur weiteren Verarbeitung mit XSLT o.ä.
datname: Datenbankname
suche: Selektion
sortierung: name der Indexdatei zum Sortieren
datout: XML-Ausgabedatei
</about>
</doku>

===========================================================
procedure dbtoxml(datname, suche,sortierung, datout : string)
===========================================================


var i : integer:=0
var db : integer = dbopen(datname)
var out : integer = REWRITE(datout,0)
var f : string
var j : string[]

PRIMTABLE(db)
access(db,sortierung)
writeln(out,'<data>')
sub _DBNAME(db)+', '+suche
i:=0
writeln(out,'<row>')
while i++<=maxlabel(db) do
splitstring(getstructure(db,i),',',j)
write(out,'<'+LABEL(db,i)+' t="'+j[1]+'"')
if HIGH(1,j)>1 then
write(out,' l="'+j[2]+'"')
end
if HIGH(1,j)>2 then
write(out,' nk="'+j[3]+'"')
end
write(out,' >')
f := (getfield(db,i))
if getstructure(db,i) like '*NUMBER*' then
f:= exchange(f,'.',',')
end
f:=exchange(f,'&','+')
f:=exchange(f,'<','<')
f:=exchange(f,'>','>')
write(out,(f))
write(out,'</'+ LABEL(db,i)+'>')
end
writeln(out,'</row>')
endsub
writeln(out,'</data>')
CLOSEDB(db)
CLOSE(out)

endproc


encodehex()
Wandelt eine ANSI-Datei in einen HEX-Code um.
'source' und 'dest' bezeichnen Dateinamen.

=====================================================
procedure encodehex(source : string;dest : string)
=====================================================

var hex : string = "0123456789ABCDEF"
var bh,bl : integer
var b : string

var d : integer = reset(source,1);

var d1 : integer = rewrite(dest,0);
While not eot(d) do

b:=read(d,1)
bh := asc(b) div 16
bl := asc(b) mod 16
Write(d1,hex[bh+1]) Write(d1,hex[bl+1])
End
close(d1)
close(d)

endproc


decodehex()
Wandelt eine in HEX codierte Datei wieder in ihre ursprüngliche Form
'source' und 'dest' bezeichnen Dateinamen

=====================================================
procedure decodehex(source : string;dest : string)
=====================================================

var hex : string = "0123456789ABCDEF"
var bh,bl : string
var b : integer

var d : integer = reset(source,0);

var d1 : integer = rewrite(dest,1);
While not eot(d) do
bh:=read(d,1)
bl:=read(d,1)
b := (POS(upper(bh),hex) - 1)*16+(POS(upper(bl),hex) - 1)
Write(d1,chr(b))
End
close(d1)
close(d)

endproc


isNumber()
Prüft, ob ein String eine gültige Zahl darstellt.

procedure isNumber(s:string):integer /* Prüft ob es sich bei s um eine gültige Zahl handelt */ var p : integer = 0 var b : integer = 1 var m : integer = Length(s) var c : string = "0123456789."

while p++<=m,b:=Pos(s[p],c) do end return b

endproc


rMakeDir()
Legt einen Verzeichnisbaum (z.B. rMakeDir("/var/tdbengine/temp/data/"))an


procedure rMakeDir(sPath:STRING) /* Rekursives MakeDir Legt einen ganzen Verzeichnisbaum an, wenn er nicht bereits existiert */

var sPre : STRING var sPart : STRING var p : INTEGER

if !IsFile(sPath) then if RightStr(sPath,1)#"/" then sPath := sPath +"/" end p:=Pos("/",sPath) if sPath[1,p] = "../" or sPath[1,p] = "./" or sPath[1,p] = "/" then sPre := sPath[1,p] sPath := sPath[p+1,255] end while p:=Pos("/",sPath) do sPart := sPath[1,p] MakeDir(sPre+sPart) sPre := sPre + sPart sPath := sPath[p+1,255] end end endproc



rfcDateStr()
Generiert einen RFC822-konformen Datumsstring aus einer UNIX_TIMESTAMP. Ideal für Cookie-Expiration-Angaben.


procedure rfcDateStr(iSeconds : INTEGER) : string /* Generiert einen Datumsstring, wie in RFC 822 definiert, jedoch ohne Zeitzonen-Angabe am Ende Sunday, 01-Dec-2099 12:00:00 */ var s : STRING Var sD, sM : STRING var iD : INTEGER

iD := UNIX_Date(iSeconds) s := Choice( 1+(iD+5) MOD 7,"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday")+", " s := s + Str(Day(iD),2,0,"","0") +"-" s := s + Choice(Month(iD)+1,"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec") + "-" s := s + Str(Year(iD)) +" "+TimeStr(UNIX_Time(iSeconds),0) return s endproc

library:index, Rev. 18, Zuletzt geändert 2005-06-08 10:34, 1156 Aufrufe
Wiki hosted for free at wikihost.org || RSS-Feed || GeboGebo 1.3.3 || 01.560 Sekunden || || PAGERANK TOOLS