AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi "Invalid BLOB handle in record buffer." bei 2. Durchlaufen der Datensätze
Thema durchsuchen
Ansicht
Themen-Optionen

"Invalid BLOB handle in record buffer." bei 2. Durchlaufen der Datensätze

Ein Thema von Bodenseematze · begonnen am 21. Nov 2023 · letzter Beitrag vom 19. Dez 2023
Antwort Antwort
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#1

AW: "Invalid BLOB handle in record buffer." bei 2. Durchlaufen der Datensätze

  Alt 4. Dez 2023, 22:38
Der Fehler entsteht aber nicht durch das DB-Grid, sondern durch die Menge der Daten. Da gab's schon immer 'nen Flaschenhals.

Statt BDE einfach mal ADO und den ODBC-Treiber von Windows für Paradox probieren (für Paradoxversionen 3.x, 4.x und 5.x)? Der Treiber ist bei meinem Windows 10 von Haus aus dabei (und war er bei älteren Windosen auch schon - führt halt nur ein Schattendasein, da keiner das wirklich zu nutzen scheint.)

Der Connectionstring könnte dann in etwa so aussehen:
Code:
Provider=MSDASQL.1;Persist Security Info=False;Data Source=InDerODBCVerwaltungVergebenerName;
Oder 'ne DSN-Datei anlegen, die könnte dann in etwa so aussehen:
Code:
[ODBC]
DRIVER=Microsoft Paradox Driver (*.db )
UID=admin
UserCommitSync=Yes
Threads=3
SafeTransactions=0
ParadoxUserName=admin
ParadoxNetStyle=4.x
ParadoxNetPath=C:\Temp
PageTimeout=5
MaxScanRows=8
MaxBufferSize=2048
FIL=Paradox 5.X
DriverId=538
DefaultDir=C:\Temp
CollatingSequence=ASCII
Oder direkt per Verbindungszeichenfolge:
Code:
Driver={Microsoft Paradox Driver (*.db )}; DBQ=c:\temp;DriverID=26
SQLDriverConnect (Paradox-Treiber) SQLConfigDataSource (Paradox-Treiber)

Eventuell mal in der BDE-Configuration mit BLOBS TO CACHE = -1 probieren, ob das Problem dann weggeht. Eventuell aber auch in der TDataBase-Komponente (soweit sie genutzt wird) bei Params mal BLOBS TO CACHE=-1 angeben.
Der Fehler tritt halt auf, wenn mehr Blobfelder / Sätze mit Blobfeldern gelesen werden, als der Zahl, die bei BLOBS TO CACHE angegeben wurde, entspricht.

Invalid BLOB handle in record buffer

Eventuell bei der Benutzung der Komponente TQuery die Eigenschaft RequestLive auf True setzen. In der Delphi 7-Hilfe steht da einiges zu, schau mal nach, ob das eine Option sein könnte. (Bin mir nicht ganz sicher, aber der Blobcache wird dann umgangen, so dass das Problem damit eigentlich nicht (mehr) auftreten sollte.)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.377 Beiträge
 
Delphi 12 Athens
 
#2

AW: "Invalid BLOB handle in record buffer." bei 2. Durchlaufen der Datensätze

  Alt 4. Dez 2023, 23:00
Oder mal versuchen die Daten auszutrennen.

Nja, grundsätzlich ist es eh besser so wenig wie möglich Datensätze Daten zu laden.

* nicht die ganze Tabelle, sondern nur den/die wichtigen Datensätze (Filter / WHERE)
* aktuell "unnötige" Spalten im SELECT weglassen
* Spalten mit gleichen/wiederholenden Daten als MasterDetail über ein/mehrere weitere Datasets angängen
* auch die Blobs könnte man z.B. via MasterDetail auslagern, vielleicht auch manuell, über einen Ladeknopf

Wenn eh kaum gescrollt wird, bzw. die Zeit für das Scrollen nicht so schlimm ist, dann jeweils nur den aktuellen Blob laden
vielleicht auch im Hintergrund den/die Blobs in Ruhe in einen Cache nachladen, anstatt sofort ALLES bei der ersten Abfrage.




Teilweise können auch die DB-Komponenten selbst Teile eigenständig nachladen.
* z.B. den Blob erst laden, wenn drauf zugegriffen wird
* oder nicht alle Datensätze laden, sondern immer nur einen Teilbereich, worin man sich grade befindet
* oder ...

z.B. siehe FetchOptions beim TFDQuery
https://docwiki.embarcadero.com/Libr...y.FetchOptions
https://docwiki.embarcadero.com/Libr...ons_Properties
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 4. Dez 2023 um 23:03 Uhr)
  Mit Zitat antworten Zitat
Bodenseematze

Registriert seit: 10. Jul 2023
69 Beiträge
 
#3

AW: "Invalid BLOB handle in record buffer." bei 2. Durchlaufen der Datensätze

  Alt 5. Dez 2023, 14:40
Der Fehler entsteht aber nicht durch das DB-Grid, sondern durch die Menge der Daten. Da gab's schon immer 'nen Flaschenhals.
Das ganze ist aber (datenbanktechnisch) eigentlich nur Pille-Palle - ein Master-Datensatz mit 32 (verwendeten) Spalten (INT, VARCHAR, DATETIME - eine davon 2048 Zeichen groß) und dann Detail-Datensätze mit 11 Spalten (INT, VARCHAR, davon eine 2048 Zeichen lang, die anderen max. 30); meistens nur 3-4 Zeilen pro Master-Datensatz max. z.Zt. 99 Datensätze.
Bei meinen Test-Datensätzen hat die Text-Spalte in den Details eine reale max. Länge von 142 Zeichen.

Also kann doch die "Menge der Daten" nicht wirklich ein Problem sein, oder?

Das ganze operiert auf einer MS-SQL Server Datenbank 2019 - der erwähnte Paradox-Treiber wird als Export / "Datenaufbereiter" verwendet, um Reports (Crystal Reports) zu füttern...

Ich versuche gerade mal in einem Testprogramm per ADO auf meine Datensätze in der MS-SQLServer Datenbank zuzugreifen...
...so ganz ist mir noch nicht klar, welche Komponenten ich in Delphi dafür verwenden soll
Für die BDE habe ich eine TDatabase-Komponente in meinem Programm und jede Menge TQuery / TDataSet-Kombinationen auf meinen Masken - bei den o.a. Master-/Detail-Datensätzen wird auf Datenbank-Views zugegriffen und der Insert/Update/Delete über UpdateSQL-Objekte auf den eigentlichen Tabellen.
Für die ADO-Variante habe ich das jetzt als Kombination "TADOConnection", "TADODataset" und "TADOQuery" versucht;
testweise auch mal mit den Jedi-Komponenten TJvADOQuery, TJvADODataset
Das scheint prinzipiell zu funktionieren - zumindest die "einfache" Auslesung von Daten.
Aber wie mache ich das jetzt mit Änderungen? Wo definiere ich die SQL-Statements für INSERT, UPDATE, DELETE?


Statt BDE einfach mal ADO und den ODBC-Treiber von Windows für Paradox probieren (für Paradoxversionen 3.x, 4.x und 5.x)?
Das muss ich auch mal ausprobieren - die Paradox-Version spielt nicht wirklich eine Rolle; es geht nur darum, eine lokale Datenbank zu verwenden, mit der auch Crystal Reports (v9) etwas anfangen kann...

Auf die BDE komplett verzichten zu können, wäre schon schön...

Eventuell aber auch in der TDataBase-Komponente (soweit sie genutzt wird) bei Params mal BLOBS TO CACHE=-1 angeben.
das versuche ich auch mal...

Der Fehler tritt halt auf, wenn mehr Blobfelder / Sätze mit Blobfeldern gelesen werden, als der Zahl, die bei BLOBS TO CACHE angegeben wurde, entspricht.
Das kann eigentlich nicht sein - der "BLOBS TO CACHE" steht aktuell bei mir auf 512 - soviele Sätze sind es nie...

Wie oben bereits erwähnt - wenn ich das Tail.Last() im OnOpen-Handler (oder auch im HeadAfterScroll) weglasse, passiert der Fehler nicht.
Wenn ich es mache, kommt der Fehler früher oder später bei Schleifen über die Detail-Datensätze oder einfach beim Scrollen im Grid, das die Detail-Datensätze darstellt...

Eventuell bei der Benutzung der Komponente TQuery die Eigenschaft RequestLive auf True setzen. In der Delphi 7-Hilfe steht da einiges zu, schau mal nach, ob das eine Option sein könnte. (Bin mir nicht ganz sicher, aber der Blobcache wird dann umgangen, so dass das Problem damit eigentlich nicht (mehr) auftreten sollte.)
Ich kann mich erinnern, dass es einen Grund dafür gab, dass bei mit RequestLive auf false steht - ich weiß ihn aber nicht mehr...


* nicht die ganze Tabelle, sondern nur den/die wichtigen Datensätze (Filter / WHERE)
Sollte m.E. bei im Schnitt nur 5-6, max. 99 Detail-Datensätzen eigentlich kein Problem sein...

* aktuell "unnötige" Spalten im SELECT weglassen
mache ich bereits.
* Spalten mit gleichen/wiederholenden Daten als MasterDetail über ein/mehrere weitere Datasets angängen
das ist ebenfalls gemacht.
* auch die Blobs könnte man z.B. via MasterDetail auslagern, vielleicht auch manuell, über einen Ladeknopf
da habe ich schon versucht, im Grid nur die ersten 150 Zeichen der Text-Daten anzuzeigen und erst bei der Editierung dieser Spalte (über ein Extra TDBMemo-Edit) die gesamten Daten bereitzustellen.
Das hat nicht geholfen - der Fehler kam trotzdem.

Wenn eh kaum gescrollt wird, bzw. die Zeit für das Scrollen nicht so schlimm ist, dann jeweils nur den aktuellen Blob laden
vielleicht auch im Hintergrund den/die Blobs in Ruhe in einen Cache nachladen, anstatt sofort ALLES bei der ersten Abfrage.
Das ist eher schwierig - die "BLOB"-Spalte enthält wichtige Daten, die auch bei der reinen Ansicht der Übersicht dienen...


Teilweise können auch die DB-Komponenten selbst Teile eigenständig nachladen.
FireDAC ist bei Delphi 7 doch noch nicht verfügbar?!
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#4

AW: "Invalid BLOB handle in record buffer." bei 2. Durchlaufen der Datensätze

  Alt 5. Dez 2023, 16:04
BLOBS TO CACHE bezieht sich auf Blobfelder und nicht auf Datensätze.

99 Datensätze mit jeweils 6 Blobspalten / VarCharspalten ist bereits mehr als 512 Blobs im Cache.

Zuviel geht hier nicht in die Millionen oder zumindest Tausende, sondern in den Bereich von ein paar Dutzend. Genaugenommen eher fast schon lächerlich wenig.

Womit kommt denn Crystal Reports zurecht? Alles was "irgendwie" von TDataSet abgeleitet ist, was bei TTable, TQuery, TADOTable, TADOQuery, ... der Fall ist? Dann sollte es auch mit 'ner Memorytable funktionieren, unter Delphi 7 z. B. TClientDataSet.

Zitat:
Wie oben bereits erwähnt - wenn ich das Tail.Last() im OnOpen-Handler (oder auch im HeadAfterScroll) weglasse, passiert der Fehler nicht.
Wenn ich es mache, kommt der Fehler früher oder später bei Schleifen über die Detail-Datensätze oder einfach beim Scrollen im Grid, das die Detail-Datensätze darstellt...
Last holt sofort alle Sätze, deshalb passiert der Fehler sofort. Ohne Last passiert er beim Scrollen im Grid (oder in 'ner Schleife per Next) sobald die 512 Blobs überschritten sind.

Berechne mal die maximal vorkommende Anzahl von Datensätzen, multipliziere das mit der Anzahl der VarCharspalten (Alle!, unabhängig von der Größe). Die Summe nimmst Du dann mal 1,5 und trägst den Wert bei BLOBS TO CACHE ein. Ist das noch im zulässigen Bereich (wo ist der definiert?) oder klappt das dann damit oder treten andere Seiteneffekte auf? Oder dauert es zumindest länger bis der Fehler auftritt?

Die ADO-Komponenten funktionieren eigentlich (fast) wie die BDE-Komponenten. Eine Umstellung sollte hier recht einfach durchzuführen sein. Ein paar Attribute haben ähnliche Namen, aber grundsätzliche Probleme sollte es nicht geben.

Geändert von Delphi.Narium ( 5. Dez 2023 um 23:39 Uhr) Grund: Schreibfehler
  Mit Zitat antworten Zitat
Bodenseematze

Registriert seit: 10. Jul 2023
69 Beiträge
 
#5

AW: "Invalid BLOB handle in record buffer." bei 2. Durchlaufen der Datensätze

  Alt 7. Dez 2023, 10:54
BLOBS TO CACHE bezieht sich auf Blobfelder und nicht auf Datensätze.
99 Datensätze mit jeweils 6 Blobspalten / VarCharspalten ist bereits mehr als 512 Blobs im Cache.
Bezieht das jegliche VARCHAR-Spalten mit ein? Oder nur die "langen"?
Wenn es nur die "langen" sind (die, die als BLOB interpretiert werden), ist es bei mir nur eine Spalte pro Datensatz - d.h. bei 100 Datensätzen (der Master-Datensatz hat auch eine BLOB-Spalte) sind es 100 * 1,5=150 - da sollte eigentlich 512 als Wert massig ausreichen, oder?!


Womit kommt denn Crystal Reports zurecht? Alles was "irgendwie" von TDataSet abgeleitet ist, was bei TTable, TQuery, TADOTable, TADOQuery, ... der Fall ist?
Nein, es geht hier um die Reportdateien selber - die wissen nichts von Delphi;
in Delphi verwende ich einen sog. VCL-Wrapper für Crystal Reports (CR) - das ist Delphi-Code, der auf eine spezielle CR-DLL zugreift; damit lassen sich CR starten und Report-Dateien in CR öffnen, drucken und/oder anzeigen. Über den Delphi-Wrapper lassen sich im Report Informationen setzen (z.B. welcher Drucker er nehmen soll, welche Datenbankschnittstelle bzw. welcher DB-Server, ...).
Die Zugriffe selber erfolgen dann aber über den Report (bzw. über CR) - was damit also geht, hängt von CR ab.
CR verfügt über einige DB-Schnittstellen; für lokale DBs aber leider nicht sooo viel (zumindest in der Version v9, die ich verwende/verwenden muß).


Last holt sofort alle Sätze, deshalb passiert der Fehler sofort. Ohne Last passiert er beim Scrollen im Grid (oder in 'ner Schleife per Next) sobald die 512 Blobs überschritten sind.
Das kann schon sein...

Ich habe jetzt im BDE-Administrator mal direkt an der ODBC-Datenquelle nachgeschaut - dort steht doch tatsächlich BLOBS TO CACHE=64
und das obwohl am dazugehörigen Treiber 512 gesetzt ist - bei einer anderen ODBC-Datenquelle, die den selben Treiber verwendet, steht der korrekt Wert.
An den Datenquellen lässt sich der Wert im BDE-Admin auch nicht verändern...

Eventuell aber auch in der TDataBase-Komponente (soweit sie genutzt wird) bei Params mal BLOBS TO CACHE=-1 angeben.
Ich habe jetzt in meinem Code bei der TDatabase als Parameter BLOBS TO CACHE=-1 hinzugefügt und beim Master-Datensatz (im AfterScroll) nach dem Öffnen des Detail-Queries ein Tail.Last() wieder eingefügt.
Bei meinen bisherigen Tests, die in der Vergangenheit zuverlässig zum Fehler geführt hatten, ist nichts mehr passiert - der Fehler scheint damit weg zu sein
(ich habe aktuell noch einen anderes Problem im Zusammenhang mit der Datenbank - aber das schreibe ich dann in einem neuen Thema...)


Die ADO-Komponenten funktionieren eigentlich (fast) wie die BDE-Komponenten. Eine Umstellung sollte hier recht einfach durchzuführen sein. Ein paar Attribute haben ähnliche Namen, aber grundsätzliche Probleme sollte es nicht geben.
Entweder verstehe ich die Komponenten nicht, oder ich bin zu blöd dafür - aber soweit ich verstanden habe, fehlen den ADO-Komponenten die Möglichkeit, SQL-INSERT/-UPDATE/-DELETE-Statements anzugeben - das bedeutet doch aber, dass man die Speicherung (wenn der SELECT auf einem nicht updatebare DB-View stattfindet) manuell machen muss, oder?


Wäre es eigentlich möglich, meine aktuell vorhandenen TQuery-Komponenten (einfach) auf TClientDataSet-(bzw. JvMemData-)Komponenten umzustellen und dann per Programmcode mit entsprechenden "echten" Datenbank-DataSets (testweise entweder TQuery oder auch angepasste TADOQuery bzw. JvADOQuery) zu verknüpfen?
Dann hätte ich wenigstens schon eine Abstraktionsebene mehr drin
Mir ist nur noch nicht so klar, wie ich das "richtig" machen soll...
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#6

AW: "Invalid BLOB handle in record buffer." bei 2. Durchlaufen der Datensätze

  Alt 7. Dez 2023, 12:37
Zitat von Bodenseematze:
Bezieht das jegliche VARCHAR-Spalten mit ein? Oder nur die "langen"?
Bezieht sich wohl auf alles, was nicht einer festen Länge entspricht. Und da fällt halt VarChar (leider) auch drunter.

Die ODBC-Konfiguration geht wohl über einen anderen Weg als die direkte Treiberkonfiguration in der BDE, so dass da schon mal "leichte" Missverständnisse auftreten können.
Zitat von Bodenseematze:
Entweder verstehe ich die Komponenten nicht, oder ich bin zu blöd dafür - aber soweit ich verstanden habe, fehlen den ADO-Komponenten die Möglichkeit, SQL-INSERT/-UPDATE/-DELETE-Statements anzugeben - das bedeutet doch aber, dass man die Speicherung (wenn der SELECT auf einem nicht updatebare DB-View stattfindet) manuell machen muss, oder?
Diese Frage verstehe ich nicht so recht. Bei den mir bekannten BDE-Komponenten TTable und TQuery gibt es keine Möglichkeit um jeweils SQL-INSERT/-UPDATE/-DELETE-Statements anzugeben.

TQuery hat die Eigenschaft SQL, das ist 'ne Stringliste, in der man beliebiges SQL angeben kann. Ein Select wird mit TQuery.Open ausgeführt und man erhält die Ergebnismenge. Alles Andere wird mit TQuery.ExecSQL ausgeführt.

Da gibt es bei den Standardkomponenten von Delphi 7 keinen Unterschied zwischen BDE und ADO. Hast Du da für die BDE-Komponenten eventuell "irgendwelche" Nachfahren im Einsatz, die da schon entsprechend erweitert wurden?
Zitat von Bodenseematze:
..., das bedeutet doch aber, dass man die Speicherung (wenn der SELECT auf einem nicht updatebare DB-View stattfindet) manuell machen muss, oder?
ja.
Zitat:
Wäre es eigentlich möglich, meine aktuell vorhandenen TQuery-Komponenten (einfach) auf TClientDataSet-(bzw. JvMemData-)Komponenten umzustellen und dann per Programmcode mit entsprechenden "echten" Datenbank-DataSets (testweise entweder TQuery oder auch angepasste TADOQuery bzw. JvADOQuery) zu verknüpfen?
Dann hätte ich wenigstens schon eine Abstraktionsebene mehr drin
Mir ist nur noch nicht so klar, wie ich das "richtig" machen soll...
Eigentlich ja. Wie kommen denn momentan die Daten in die Paradoxtabellen? Werden die Daten überhaupt zwingend als Datenbankdateien auf der Festplatte benötigt?

Wenn nein, sollte es möglich sein an der Stelle, an der momentan die Daten in die Paradoxtabellen kommen, TClientDataSet bzw. TJvMemoryData (oder alles, was "irgendwie" von TDataSet abgeleitet wurde und nur im Speicher vorhanden ist) einzusetzen.

Statt Paradox per BDE wäre aber auch noch der Einsatz von TDBF möglich. Das unterstützt (nicht vollumfänglich) dBase-Dateien ohne BDE. Man hat damit die Daten auch als Datenbankdateien auf der Festplatte zur Verfügung. Für kleinere Datenmengen eventuell eine Option, da auch andere Software, die dBase unterstützt, damit arbeiten könnte. Was ich nicht weiß ist, ob TDBF inzwischen auch Memos und Indexdateien von dBase unterstützt.
  Mit Zitat antworten Zitat
Bodenseematze

Registriert seit: 10. Jul 2023
69 Beiträge
 
#7

AW: "Invalid BLOB handle in record buffer." bei 2. Durchlaufen der Datensätze

  Alt 7. Dez 2023, 13:15
Zitat von Bodenseematze:
Bezieht das jegliche VARCHAR-Spalten mit ein? Oder nur die "langen"?
Bezieht sich wohl auf alles, was nicht einer festen Länge entspricht. Und da fällt halt VarChar (leider) auch drunter.


Diese Frage verstehe ich nicht so recht. Bei den mir bekannten BDE-Komponenten TTable und TQuery gibt es keine Möglichkeit um jeweils SQL-INSERT/-UPDATE/-DELETE-Statements anzugeben.
Man kann über das TQuery-Property UpdateObject DeleteSQL, InsertSQL und ModifySQL-Statements angeben;
s.a. https://docwiki.embarcadero.com/Libr...t.UpdateObject
Und so ein UpdateObject habe ich bei TADOQuery nicht gefunden...
EDIT: auch FireDAC hat in seiner Query-Klasse TFDQuery ein UpdateObject ; auch die Interbase-Variante hat sowas - nur eben anscheinend die ADO-Variante nicht...

Zitat von Bodenseematze:
..., das bedeutet doch aber, dass man die Speicherung (wenn der SELECT auf einem nicht updatebare DB-View stattfindet) manuell machen muss, oder?
ja.
Das wäre doof - aber natürlich machbar (ggf. über eine Ableitung...)

Eigentlich ja. Wie kommen denn momentan die Daten in die Paradoxtabellen? Werden die Daten überhaupt zwingend als Datenbankdateien auf der Festplatte benötigt?
Vergiss' mal die Paradox-Tabellen - die sind "flach" und tabellenmäßig einfach und werden mit technischen Berechnungsergebnissen direkt vor dem Aufruf von CrystalReports gefüllt; dafür werden z.Zt. TTable-Objekte verwendet...

Die o.a. TQuery sind für die Abfrage und Änderung der Daten vom MS-SQLServer da - das ist (datenbanktechnisch) der wesentlich komplexere Teil...

Wenn nein, sollte es möglich sein an der Stelle, an der momentan die Daten in die Paradoxtabellen kommen, TClientDataSet bzw. TJvMemoryData (oder alles, was "irgendwie" von TDataSet abgeleitet wurde und nur im Speicher vorhanden ist) einzusetzen.
Ich bin da auf der Suche nach Beispielen / Erklärungen, wie das über Master-/Detail-Beziehungen mit Bezügen zu "echten" Datenbank-Datasets inkl. am besten gemacht wird...

Ich habe da noch eine (automatische) Hintergrund-Auswertung der TField-Objekte auf den Masken um geänderte Datenbankfelder optisch zu markieren - das sollte damit natürlich auch noch funktionieren / durdchführbar sein


Statt Paradox per BDE wäre aber auch noch der Einsatz von TDBF möglich.
Das schaue ich mir auf jeden Fall mal genauer an - das DBF-Format wäre tatsächlich eine Option; wobei dann ca. 150 Reportdateien angepasst werden müssten - das ist dann auch wieder eine nicht zu unterschätzender Aufwand.
Da gefällt mir die Möglichkeit, das über MS Paradox ODBC-Treiber zu lösen, wesentlich besser

Geändert von Bodenseematze ( 7. Dez 2023 um 14:38 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 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