![]() |
Datenbank: FB • Version: 1.5 • Zugriff über: ZEOS
ZEOS im Produktiveinsatz mit FB ?
Hallo #,
hat jemand FB1.5 + ZEOS im Produktiveinsatz (>10 Clients, 24h usw.) Wann ja, die alte oder neue Version ? Ich will mich jetzt so langsam von der BDE verabschieden (jaja ;) ), und würde ZEOS wegen Multi-DB-Fähigkeit UIB vorziehen. Danke Heiko |
Re: ZEOS im Produktiveinsatz mit FB ?
Hi,
hab' eben gerade Deine Anfrage gelesen. Wir haben eine Applikation auf > 50 Rechnern laufen, die die Zeos in Version 6.1.5 (ohne Patches) nutzt, und auf eine MySQL 4.0.x Datenbank zugreift. Über die Applikation werden ständig Daten neu eingepflegt, geändert und abgefragt, so dass die DB richtig "Stress" hat. Das Teil läuft sehr stabil, was für den Einsatz dieser Zeos-Version auch mit anderen unterstützten Datenbanken (wie z. B. FB 1.5) spricht. Wenn die 6.6'er Version der Zeos "stable" ist, würde ich diese empfehlen, da sind einige Verbesserungen (auch bzgl. FB) drin. Grüße! |
Re: ZEOS im Produktiveinsatz mit FB ?
Hallo Domo,
ich habe gerade dein ZEOS-Tut gelesen (6.1.5). Dort standen ein paar Sachen drin, die mir nicht so gefallen an ZEOS. - InTransaction existiert nicht OK, sollte es jetzt in der 6.5 ja - Commit Retaining wie hast du das in der deiner App gelöst, ein hard commit zu machen (das ist ja der BDE-Standard) ein Connection.Close will ich nicht machen (Performance) ich benutze Firebird, da führt wie du so schön gesagt hast, ein retaining zu performance-Problemen - Transaction kann eine Connection wirklich nur eine Transaktion bedienen ? das ist zwar BDE-Standard, aber ja wohl nicht mehr state-of-art Danke im voraus Heiko |
Re: ZEOS im Produktiveinsatz mit FB ?
Hi,
die ersten zwei Punkte haben sich ja quasi "erledigt". Gegen das Retaining (gefällt mir persönlich auch nicht!) kann ich stand jetzt leider nix machen. Die Zeos-Entwickler, die FB nutzen, müssen es noch als gegeben so hinnehmen. Sorry! Leider kann eine Connection auch nur eine Transaktion bedienen. Damit, dass das nicht mehr "State of the Art" ist, hast Du recht ... Mein Vorschlag: Mach doch mal einen Feature-Request-Thread bei uns im Forum auf und schlag das mal vor für eine der nächsten Versionen :thumb: Achja - hatte ich vergessen zu erwähnen: Die Applikation, die ich zuvor erwähnt hatte, greift über ZEOS ebenfalls (über das ADO-Protokoll) auf einen MSSQL-Server zu, der extrem unter Dampf steht und jede Menge Transaktionen verarbeiten muss. Funzt wunderbar... Grüße! |
Re: ZEOS im Produktiveinsatz mit FB ?
Hallo,
also muss ich UIB nehmen. oder warten :wall: *seufz* Was heisst "feature request bei uns im Forum" ? delphipraxis ? Heiko |
Re: ZEOS im Produktiveinsatz mit FB ?
Zitat:
|
Re: ZEOS im Produktiveinsatz mit FB ?
Hi!
Zitat:
@hoika: Ich hoffe, dass Du trotzdem das Zeos-Projekt im Auge behältst, auch wenn Du zur "Konkurrenz" ;-) gehst ... |
Re: ZEOS im Produktiveinsatz mit FB ?
;)
Im feature request steht es schon drin. Antwort "dauert, mal sehen, usw. ..." Das ist auf jeden Fall das K.O.-Kriterium für die Nutzung mit Firebird. Ein Connect dauert "ewig", Wie soll das ohne HardCommits überhaupt funktionieren ?. :wall: :wall: Und die Tatsache, dass es seit Jahren nicht drin ist, macht mich stutzig. Naja, da ich eh bridge pattern nutzen werden, behalte ich es im Hinterkopf. :zwinker: Heiko |
Re: ZEOS im Produktiveinsatz mit FB ?
Da wir mit den IBO's (genauer TIBOQuery) an manchen Stellen auf Performance-Probleme stoßen (eine schlichtes Open, welches nur einen Datensatz liefert, dauert schonmal 1 bis 1,5 sekunden), wurde ich erst Heute gefragt ob Zeos eine Alternative ist. Privat habe ich nur positive Erfahrungen gemacht aber wenn es an ein Projekt mit tausend Anwendern geht...
Nehmen wir einmal ich würde mir das Commit-Problem wegfuschen, was wisst ihr noch Positives bzw. Negatives zu berichten? Mein Fusch-Ansatz:
Delphi-Quellcode:
Wenn ich mir eine eigene DB-Treiber-Klasse ableite (und das Rollback entsprechend anpasse), wie sehr wäre mein Ansatz gefuscht?
unit ZDbcInterbase6;
... procedure TZInterbase6Connection.Commit; begin if Closed then Exit; if FTrHandle <> nil then begin FPlainDriver.isc_commit_transaction(@FStatusVector, @FTrHandle); // <- meine Änderung // FPlainDriver.isc_commit_retaining(@FStatusVector, @FTrHandle); <- alt CheckInterbase6Error(FPlainDriver, FStatusVector, lcTransaction); DriverManager.LogMessage(lcTransaction, FPlainDriver.GetProtocol, 'TRANSACTION COMMIT'); StartTransaction; // <- meine Änderung end; end; ... Ach ja, wir setzen natürlich Firebird ein. In Version 1.5 und D7. |
Re: ZEOS im Produktiveinsatz mit FB ?
Hallo,
wieso muss das Rollback angepasst werden ? Warum dauert das Open so lange ? Oder anders gefragt, dauert es denn mit ibplanalyzer kürzer ? Heiko PS: Wie du siehst, stehe auch gerade vor dem Zeos-Problem ;( |
Re: ZEOS im Produktiveinsatz mit FB ?
Zitat:
Zitat:
|
Re: ZEOS im Produktiveinsatz mit FB ?
Zitat:
Vorab : Zeos ist bei mir ziemlich schnell aus dem Rennen gewesen, und zwar hauptsächlich wegen der Multi-DB Unterstützung. Ich kann mir nicht vorstellen, daß in einer der unterstützten Datenbanken eine optimale Performance erreicht werden kann und alle Funktionen überhaupt implementiert sind. Da ein Endanwender nur selten nach der DB frägt ist das IMHO Blödsinn :mrgreen: Habe das jedenfalls noch nicht erlebt. Zitat:
|
Re: ZEOS im Produktiveinsatz mit FB ?
Zitat:
Zum Thema Performance kann dir z.B. verraten das Zeos (zumindest beim Firebird) eine Top-Platzierung schafft. Vergleichen wir Zeos mit den IBObjects, eine Sammlung nur für die Verbindung mit dem Firebird, ist Zeos überlegen/schneller. In einigen Belangen/Konstellationen sogar deutlich schneller. Nehmen wir mein weiter oben erwähntes Open-Problem: Zeos ist eine ganze Sekunde schneller. Ein anderer Vertreter UIB hingegen lässt auch Zeos weit hinter sich. Aber die Ursache dafür liegt wohl nicht an der Spezialisierung, sondern am Komfort. Die IBO's haben viel "Komfort-SchnickSchnack", was die IBO's wohl etwas träge macht. UIB konzentriert sich auf das Wesentliche. Funktionsumfang könnte ein Punkt sein. Aber Zeos beherscht alles was du auch mit den Standard-Komponenten in Verbindung mit der BDE kannst. Zumal die Anforderung bei einem einfachen Programm nicht so hoch sein können. SQL-Anweisungen kannst du mit jeder DB-Sammlung absetzen. Und damit hast du alle Funktionen implementiert. Möchtest du ein Wartungstool oder ähnliches machen, sieht es natürlich anders aus. Du hast keine Backup/Restore-Komponenten, kannst keine Benutzer verwalten oder Performance-Analysen machen. Wobei sich gbak, gfix und gsec problemlos in das eigene Programm "integrieren" lassen Zitat:
edit: Nachdem ich mir UIB und Zeos angesehen habe, möchte ich doch noch meine Meinung zum Ursprung des Themas kund tun. Zitat:
UIB konnte mich durch die Geschwindigkeit und durch das stetig wachsende Zubehör begeistern. Schade finde ich es das keine Query existiert welche Daten bearbeitet und datensensitive Steuerelemente bedient. Vermissen tue ich auch die Möglichkeit gejointe Datenmengen zu bearbeiten. Beides kann zwar durch ein zusätzliches Packages, in Form einer weiteren Komponente, nachgerüstet werden, aber das wirft bei mir Fragen auf: Warum ist es ein extra Package? Kommt es von einem Dritten? Wie gut ist es integriert und wie Update2Date wird es gehalten? Mein Fazit: Sehr interessant. Aber einsetzen würde ich sie nur in kleinen Programmen oder in Modulen in denen es auf Geschwindigkeit ankommt (zumindest bis sie mein Vertrauen erweckt haben). Ignoriert man das Commit-Retaining, kann ich zu Zeos nichts negatives berichten. Sie sind schnell und lassen nichts vermissen. Begeistert hat mich die Möglichkeit gejointe Datenmengen bearbeiten zu können. Aber nicht nur die Hauptdatenmenge sondern auch die gejointen Daten. Mit einer Query und auf einen Schlag. Ebenfalls erfreulich: Multi-DB. Es bleibt, bei einer DB-Umstellung, natürlich jede menge Arbeit zu erlerdigen (Trigger, SP's, DB-Dialekte), aber ein anderer Teil an Arbeit entfällt. Mein Fazit: Ich würde es auf ein Versuch ankommen lassen. |
Re: ZEOS im Produktiveinsatz mit FB ?
Zitat:
Da ist ja noch mehr : Zitat:
Delphi-Quellcode:
Transaction.SetSavePoint ('SAVEPOINT1');
... // weitere Eingaben Transaction.SetSavePoint ('SAVEPOINT2'); ... // weitere Eingaben Transaction.RollbackToSavePoint ('SAVEPOINT1'); // uff, verhauen->zurück. Am besten sogar zu Savepoint1 ... // ab da wieder weitermachen Transaction.Commit; // endlich fertig |
Re: ZEOS im Produktiveinsatz mit FB ?
Hallo,
nette Diskussion habe ich angestossen. Aber wie ich schon selbst festgestellt habe, werde ich erst mal die Finger von ZEOS lassen. Zu Transaktionen: ja ein TConnection (also eine Client-Verbindung zur Datenbank, also eine TDataBase der BDE) kann unter ZEOS nur eine Transaktion gleichzeitig bedienen. Eine TConnection -> TTransaction -> TQuery gibt es nicht, es wird alles über die TConnection angestossen, wie man es halt von der BDE gewohnt. Natürlich können mehrere Transaktionen gleichzeitig laufen, dann aber über je eine TConnection (also DB-Verbindung). Apropos BDE, ich weiss, dass sie tot (deprecated) ist. Aber ich habe hier ein Programm mit ~ 900000 Zeilen Code zu warten, dass läuft halt noch damit. Zum damaligen Zeitpunkt (1995) gab es weder ibx, noch fiblus usw ;( Für mich KO-Kriterium ist allerdings, dass es keine HardCommits gibt, jedes Conn.Commit erzeugt ein Commit Retaining ! Schön für die Performance, wenn man die Connection nach getaner Arbeit sofort wieder schliesst. Lasse ich die aber offen, weil ein Connect ohne Connection-Pool lange dauert, steigt der FB irgendwann aus. Die Lösung im ZEOS-Forum heisst "Mache ab- und zu die Connection zu und wieder auf" Das schlimme ist, es lässt sich hält nicht einstellen. Die BDE hatte immer ein hardcommit gemacht (es sei denn, man benutzt die driver flags). Heiko |
Re: ZEOS im Produktiveinsatz mit FB ?
Die Frage verstehe ich nicht:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: ZEOS im Produktiveinsatz mit FB ?
Hallo,
ja ich hätte gern 2 Transaktionen :-D In diesem Fall ist es so, dass ich mit pessimistischen Sperren arbeiten möchte, also z.B. Person wird gesperrt, bevor sie bearbeitet werden kann. Jetzt könnte man das per select for lock (oder so ähnlich machen) oder man schreibt innerhalb einer Transaktion update person set id=:id um das innerhalb der Transaktion schon zu sperren. Ich schreibe aber ein Sperrprotokoll mit, wie drinsteht personalid=5 ist gesperrt. Die Sperre wird per Timer (oder Thread) alle 1 min aktualisiert. Und da isses :wall: Diese Aktualisierung soll natürlich in einer eigenen Transaktion (mit read committed) laufen und darf andere DB-Sachen nicht beeinflussen. Per BDE und ZEOS muesste ich jetzt eine neue Connection (TDataBase/TConnection) erzeugen. Per IBX/UIB wird einfach eine 2. Transaktion erzeugt. Das heisst, kein neues Connect. Heiko |
Re: ZEOS im Produktiveinsatz mit FB ?
Zitat:
Das hat doch alles nichts mit einer einzigen möglichen Transaktion zu tun ? Und ob. Nur kurz : es geht um Deadlocks, Datenkonsistenz usw. Natürlich kann man sofort Committen, aber dann kann man jegliches Rollback vergessen. Habe nicht umsonst nach RollBackToSavePoint gefragt. Vermute mal, daß bei Zeos verstärkt CommitRetaining zum Einsatz kommt. Nur, was soll man denn mit sowas auf Dauer ? Gut, kann jetzt nur genau sagen, wie es bei FibPlus aussieht. Woanders (außer bei Zeos) dürften zumindest aber mehrere Transactions möglich sein. Handelt es sich sogar um viele Netzwerk-User, dann ist es unbedingt nötig zumindest 2 Transactions zu benutzen. Eine lesende und eine schreibende. Die lesende kann ruhig länger dauern (die berühmte Kaffeepause, die viel länger wird als geplant). Dann stellt man die Isolation-Levels der Transactions nach jeweiligem Bedarf ein und irgendwann gehts dann wie gewünscht. Aber auch im Netz zu 100 %. Wichtig hierbei ist jedoch, daß alle DB-Aktivitäten im Kontext dieser beiden Transaktionen laufen. In FIBplus hat man bei einem Dataset z.B. außer der Standard-Transaction im OI auch eine UpdateTransaction. Die muß man eben den Datasets zuordnen. Eine weitere Database-Komponente mit anderer Transaction nützt da überhaupt nichts. Aber ich verstehe auch einiges nicht. 8) Z.B. das : Zitat:
Und hoika, bei 900000 Zeilen dürfen die DB-Zugriffskomponenten keinen Cent kosten, oder wie ? :shock: Was kostet es denn, 4 Wochen das Programm abzuändern auf Zeos, dann zu merken, daß es nicht geht, dann nochmals 3 Monate für UIB aufzuwenden, wo die Hälfte fehlt ? Nur, um 200 EUR zu sparen ? :gruebel: Kurz noch zu Deinem beabsichtigten Locking. Guck Dir mal die Transaction-Isolation-Levels genauer an. Locking braucht man eigentlich bei einer MGA-Architektur nur selten. Habe einen Fall, da wirds wohl verwendet werden. In FIBplus habe ich hierzu eine function Dataset.LockRecord und fertig. Guck Dir das doch auchmal an. Die Trial ist zeitlich unbeschränkt und in der Funktionalität bei relativ unwichtigem eingeschränkt. Falls Du damit anfängst, das Programm zu modernisieren und Dich stört beim konkreten realen Einsatz der Splash-Screen, der bei der Trial kommt, dann treibe bis zur Fertigstellung irgendwie die 200 EUR auf. :mrgreen: Sehe gerade IBX ? FB-Locking ? Sie habens doch gesagt, nix FB ! Also besser gleich vergessen. |
Re: ZEOS im Produktiveinsatz mit FB ?
Hallo,
ZEOS benutzt nur Commit Retaining. Es ist nichts anderes einstellbar ! Zum Locken. Ich will ja gar nicht den Datensatz physisch locken, ich locke über eine Sperrtabelle. Lock heisst, dass das Programm z.B. eine Person sperrt, damit ein anderer Client nicht gleichzeigt schreibend auf Daten zugreifen kann. Eine Person wird auch dann gesperrt, wenn z.B. ihre Urlaubsdaten bearbeitet werden, obwohl die in einer ganz anderen Tabelle sind. Das mit dem select for update war ja nur so eine ähnliche Sache. Naja, muss ich wohl die 200 EUR am Bahnhof erschnorren ;) 3 Monate zum Umstellen sind ilosorisch (sieht komisch aus das Wort ;) ) Das geht eh nur im laufenden Betrieb, also bridge pattern einbauen. Das dumme ist, es sind ein "paar" TTable auf Forms dabei ... Ich hatte mir dass so gedacht TBaseQuery = class end; TBdeQuery = class(TBaseQuery) end; TFIBPLusQuery = class(TBaseQuery) end; und dann über class factory die gewünschte Query erzeugen. Ich muss in Notfällen immer schnell zur BDE zurückkommen können. Heiko |
Re: ZEOS im Produktiveinsatz mit FB ?
Zitat:
Besser ist es so: illusorisch Ich weiß, sprachliche Feinheiten :roll: Nix für Ungut :wink: |
Re: ZEOS im Produktiveinsatz mit FB ?
Habe jetzt mal die Ausgangsfrage neu gelesen. hoika, die Frage stammt ja sogar von Dir ? :shock: Du willst also tatsächlich ein 900.000 Zeilen Programm für mehr als 10 User und im 24 St.-Betrieb auf Zeos umstellen ? Das noch im laufenden Betrieb ? :shock: :shock: Und das sogar noch möglichst umsonst ? Das ist nicht illusorisch, es grenzt eher an Selbstmord. :mrgreen:
|
Re: ZEOS im Produktiveinsatz mit FB ?
Moin, moin zusammen
@ Hansa, kohmmt da nicht Lebnsfreude auf: Da hat noch Jemand klare Ziele! Also Datenmengen sind für Zeos überhaupt kein Problem! Die Notwendigkeit das Locking über eine Sperrtabelle laufen zu lasen macht allerdings einiges an Arbeit. Da gab es mal einen Artikel im ENTWICKLER: Geht aber ist aufwendig. Das machen die FIB-Kponenten doch konfortabler. Wieviel von dem Code sich mit DB-beschäftigt ist vielleicht auch relevant. Grüße in die Runde // Martin |
Re: ZEOS im Produktiveinsatz mit FB ?
Martin meint den Entwickler-Artikel : "Ich sperre, also bin ich !" Na gut, für BDE-Benutzer ist der wohl immer noch brandneu, nämlich Ausgabe 6/2003. :mrgreen: Auch dieses Konzept ist mittlerweile schon überholt. Es gibt ja jetzt "WITH LOCK" in Firebird.
|
Re: ZEOS im Produktiveinsatz mit FB ?
:P !: Interbase, Transaktionen verstehen und nutzen,der ENTWICKLER Juli/August 2001 ! :mrgreen: .
Eigentlich ist der Jahrgang schon im Keller, aber die Ausgabe :zwinker: hat es am Licht überlebt! Viele Grüße // Martin |
Re: ZEOS im Produktiveinsatz mit FB ?
Es ist nicht zu fassen, aber 2001, da war doch erst 1-2 Jahre vorher bekannt gegeben worden, daß die BDE nicht mehr weiterentwickelt wird. :gruebel: Die war damals ja dann noch wie neu. :mrgreen:
|
Re: ZEOS im Produktiveinsatz mit FB ?
und sie wird immer noch produktiv verwendet...
|
Re: ZEOS im Produktiveinsatz mit FB ?
Noch so ein alter Sack. :mrgreen: Und nu ? Weil die immer noch da ist, tauchen solche Fragen immer wieder auf. :P
|
Re: ZEOS im Produktiveinsatz mit FB ?
Tja ;(
Was soll ich machen, den Artikel meinte ich übrigens ;) Das mit dem WithLock will ich ja vermeiden. Cheffe hat immer noch den MS-SQL im Hinterkopf. Der hat sowas nicht afaik. Ausserdem kann man mit der Sperrtabelle schön feststellen, wer das gerade (seit wann) in Bearbeitung hat. Übrigens ist der 1. Code 1995 entstanden (damals noch mit Paradox), nicht 2001, da war die BDE state of the art ... Dieses "BDE ist out" von den ganzen Frischlingen hier kann ich nicht mehr hören :wall: :wall: :angel: Heiko PS: In meiner Freizeit baue ich gerade den Code um, so dass er "später" mal von der BDE wegkommt. |
Re: ZEOS im Produktiveinsatz mit FB ?
Ich fühle mich eigentlich nicht als Frischling :mrgreen:
Das ständige Warnen vor der BDE ist eigentlich gerade an die Frischlinge adressiert, diese links liegen zu lassen, bevor sie sich dann an deren Eigenheiten gewöhnen und diese dann auf "richtige" Datenbanken übertragen wollen. |
Re: ZEOS im Produktiveinsatz mit FB ?
Moin zusammen,
im Groh sind wir uns wohl einig. Wenn die Arbeit mit den Sperrtabellen gemacht ist, warum soll man es dann nicht weiterverwenden? Hat auch Vorteile: Abgespeichterte Zusatzinformationen: Wer speichert, welcher Mode (Readonly/Write usw.). Letzlich kommt es darauf an wie schlüssig dass umgesetzt ist. Zur Ausgangsfrage kann ich sagen, dass ich Zeos mit 5-6 Clients relativ problemlos im Einsatz habe. Geschwindigkeistsmäßig ist das auch noch vertretbar. Wir haben allerdings 1-GBit-Netzwerkkarten, was preislich auch kein Beinpruch ist. Grüße // Martin |
Re: ZEOS im Produktiveinsatz mit FB ?
Hallo Martin,
auch mit FB? Wie hast du das mit dem commit retaining gelöst ? Laut Andreas Kosch gibt es doch damit Probleme. Heiko |
Re: ZEOS im Produktiveinsatz mit FB ?
Soweit ich das sehe, hat hier in dem Thread noch kein einziger Frischling was geschrieben. Anscheinend trauen die sich nicht. :-D Die werden schon wissen warum. :mrgreen:
Warum besteht eigentlich überhaupt Handlungsbedarf ? Was ist denn so wichtig, dass die BDE weg muß ? Sind das konkrete oder längerfristige Überlegungen ? Auch wenn hier (zurecht) vor einem Einsatz der BDE (mittlerweile) gewarnt wird. Es gilt immer noch : "Never change a running System" Wobei ich hinzufügen würde "too much". Das ganze darf aber nicht zum Selbstzweck entarten. Ist der Fall der, daß mit der Zeit immer mehr Kompromisse eingegangen werden müssen, dann muss irgendwann wohl auch mal Tabularasa gemacht werden. Wenn schon, dann aber richtig. Sieht aus, als wäre das Deine momentane Sicht der Dinge. IMHO fängst Du aber trotzdem halbherzig an. Zuallererst wird eine kostenlose Komponentensammlung gesucht. 8) Ich habe das umgekehrt gemacht : zuerst mal geguckt, was es denn überhaupt gibt. Dann getestet und als absehbar war, was gut ist, da habe ich mal geguckt was die Alternativen denn überhaupt kosten. Jetzt betrachte ich das mal in diesem Zusammenhang : Zitat:
|
Re: ZEOS im Produktiveinsatz mit FB ?
Recht hast du ! ;)
Ich will mich ja gerade um den Test rummogeln, indem ich gefragt habe, gerade weil ja ZEOS multidb-fähig ist. Naja, ich werde erst mal meine bridge-pattern Query zusamenbauen, und die BDE-Query als erste Option dort reinpacken. Mein Problem ist ja leider auch, dass nicht alle Routinen auf Query zurückgreifen, dass will ich in dem Zusammenhang auch noch prüfen/ändern. Jedes Ändern erzeugt wieder Tests (dunit ist fein, wenn alle Routinen dort drin wären ...) *seufz* Ah ja, ist bei fibplus dann der Quellcode dabei ? Heiko |
Re: ZEOS im Produktiveinsatz mit FB ?
Hallo Heiko,
über die Sperrtabellen hasst Du den einen Teil selbst schon gelöst. Die Frage ist jetzt nur noch was passiert, wenn Änderungen verworfen werden und da bin ich recht trivial aber wirkungsvoll: ![]() Zitat:
Einen klaren Vorteil haben die Zeos-Komponenten: Die Datenbank kann nahezu transparent getauscht werden, solange man keinen speziellen SQL-Syntax einsetzt. Grüße // Martin |
Re: ZEOS im Produktiveinsatz mit FB ?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz