AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme bei DLL - Rückgabewert

Ein Thema von BigBen · begonnen am 12. Dez 2007 · letzter Beitrag vom 12. Dez 2007
Antwort Antwort
Seite 1 von 2  1 2      
BigBen

Registriert seit: 12. Dez 2007
Ort: Nassenfels
11 Beiträge
 
#1

Probleme bei DLL - Rückgabewert

  Alt 12. Dez 2007, 10:54
Hallo,
ich muß über Delphi eine ID einer Magnetspeicherkarte auslesen.
Das Lesegerät hängt auf CommPort 3 und wird über eine DLL des Herstellers angesprochen.

Ich bring mit meiner Funktion keinen Wert aus der Dll, der Fehler lautet immer:
E2035 Nicht genügend wirkliche Parameter.

Delphi-Quellcode:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;
type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
const
  dieDll = 'H:\DLL_Verbindung\VS_Reader.dll';
  function _ReadReaderStartStop(theAuswIDT:PChar; theLength:integer; theTimeOutMilliSeconds:integer):integer; stdcall;
  external dieDll;
  var
  Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
   theAuswIDT: PChar;
begin
 Edit1.Text := _ReadReaderStartStop(theAuswIDT);
end;
end.

Hier die Beschreibung des Herstellers über die Einbindung der DLL in Delphi (is n Haufen Text, wichtig ist aber glaub ich nur der Markierte Text):

Bin für jeden Tip dankbar.
Viele Grüße aus dem schönen Altmühltal.
Benny


Es stehen Folgende Funktionen zur Verfügung:
_SetIniPath
_StartReader
_StopReader
_ReadReader
_ReadReaderStartStop
_SetProcedureGetTelegramm
_SetClassProcedureGetTelegramm
_GetVersion
3.1 _SetIniPath
Ohne Funktion, die Informationen zur Initialisierung stehen in der Registry
3.2 _StartReader
Deklaration:
function _StartReader: integer; stdcall;
Keine Übergabeparameter.
Rückgabewert: Integer, beinhaltet den ERROR Code.
Diese Funktion setzt alle DLL internen Variablen auf Null, i nitialisiert den Leser
und startet das Polling. Das Polling ist timergesteuert, es werden keine Threads
angelegt. Solange das Polling aktiv ist, kann die Performance der Applikation
„leiden“.
Mit der Funktion _ReadReader kann die Ausweisnummer abgeholt werden, mit
der Funktion _SetProcedureGetTelegramm bzw.
_SetClassProcedureGetTelegramm wird die Callback Funktion an die DLL
übergeben, wodurch, sobald ein Ausweis gelesen wurde, die Ausweisnummer
direkt an die Applikation übergeben wird.
3.3 _StopReader
Deklaration:
function _StopReader: integer; stdcall;
Keine Übergabeparameter.
Rückgabewert: Integer, beinhaltet den ERROR Code.
Diese Funktion stoppt das Polling.
3.4 _ReadReader
Deklaration:
function _ReadReader(theAuswIDT: PChar;theLength: integer): integer; stdcall;
Übergabeparameter:
TheAuswIDT ist ein char Pointer. Die Speichergrösse muss um 1 grösser sein als
theLength. Der Leser gibt immer eine 16 stellige Ausweisnummer zurück.
theAuswIDT sollte mindestens 17 char lang sein, entsprechend theLength auf 16
stehen. Eine Überprüfung, ob der übergebene Speicherbereich gültig ist, findet in
der DLL nicht statt.
Rückgabewert: Integer, beinhaltet den ERROR Code.
Mit dieser Funktion kann nach _StartReader zu einem beliebigen Zeitpunkt die
Ausweisnummer des letzten Lesevorgangs abgeholt werden.
3.5 _ReadReaderStartStop
Deklaration:
function _ReadReaderStartStop(theAuswIDT: PChar;theLength: integer;
theTimeOutMilliSeconds: longint): integer; stdcall;
Übergabeparameter:
theAuswIDT ist ein char Pointer. Die Speichergrösse muss um 1 grösser sein als
theLength. Der Leser gibt immer eine 16 stellige Ausweisnummer zurück.
theAuswIDT sollte mindestens 17 char lang sein, entsprechend theLength auf 16
stehen. Eine Überprüfung, ob der übergebene Speicherbereich gültig ist, findet in
der DLL nicht statt.
theTimeOutMilliSeconds übergibt einen Timoutwert in Millisekunden.
Rückgabewert: Integer, beinhaltet den ERROR Code.
Mit dieser Funktion wird zunächst die Funktion _StartReader aufgerufen.
Anschliessend wartet die Funktion auf einen Lesevorgang. Erfolgt ein
Lesevorgang innerhalb der theTimeOutMilliSeconds Zeit, so wird die
Ausweisnummer in die Variable theAuswIDT geschrieben, _StopReader
aufgerufen und die Funktion beendet. Wird der Timeout überschritten, so wird
kein Fehler (ERROR Code = 0) zurückgegeben, aber theAuswIDT ist ein „NULL
String“.]

3.6 _SetProcedureGetTelegramm
Deklaration:
procedure _SetProcedureGetTelegramm(theCallBackTelegramm:
TCallBackTeleg; theTelegramm: PChar;theSize: integer); stdcall;
TCallBackTeleg = procedure(theTele: PChar; theErrorCode: integer) ; cdecl;
Übergabeparameter:
theCallBackTelegramm ist die Procedure welche von der DLL nach dem Lesen
einer Karte aufgerufen wird.
ã2003 primion Technology AG
Implementierung der VS-READER.DLL Seite: 5
Version 01.02.01 vom 25.04.2003
theTelegramm ist ein char Pointer. Die Speichergrösse muss um 1 grösser sein
als theSize. An dieser Speicheradresse wird von der DLL die Ausweisnummer
abgelegt. Der Leser gibt immer eine 16 stellige Ausweisnummer zurück.
In der Applikation muss die Procedure TcallBackTeleg deklariert werden. Die DLL
gibt mit theTele die Adresse von theTelegramm zurück.
Mit theErrorCode wird ein eventueller Fehler zurückgegeben.
Rückgabewert: Keiner.
Diese Procedure wird von Applikationen die mit Microsoft Developer Studio (C++)
erstellt werden verwendet
3.7 _SetClassProcedureGetTelegramm
Deklaration:
procedure _SetClassProcedureGetTelegramm (theCallBackTelegramm:
TCallBackClassTeleg; theTelegramm: PChar;theSize: integer); stdcall;
TCallBackClassTeleg= procedure(theTele: PChar; theErrorCode: integer) ; of
object;
Übergabeparameter:
theCallBackTelegramm ist die Procedure welche von der DLL nach dem Lesen
einer Karte aufgerufen wird.
theTelegramm ist ein char Pointer. Die Speichergrösse muss um 1 grösser sein
als theSize. An dieser Speicheradresse wird von der DLL die Ausweisnummer
abgelegt. Der Leser gibt immer eine 16 stellige Ausweisnummer zurück.
In der Applikation muss die Procedure TCallBackClassTeleg deklariert werden.
Die DLL gibt mit theTele die Adresse von theTelegramm zurück.
Mit theErrorCode wird ein eventueller Fehler zurückgegeben.
Rückgabewert: Keiner.
Diese Procedure wird von Applikationen die mit Delphi erstellt werden verwendet.
3.8 _GetVersion
Deklaration:
procedure _GetVersion(theVersion: PChar); stdcall;
Übergabeparameter:
TheVersion ist ein char Pointer. An diese Adresse schreibt die DLL den
Versionsstring. Es ist darauf zu achten, dass für theVersion genügend Speicher
reserviert wird, eine Prüfung des Speicherbereiches findet in der DLL nicht statt.
Rückgabewert: Keiner.
ã2003 primion Technology AG
Implementierung der VS-READER.DLL Seite: 6
Version 01.02.01 vom 25.04.2003
Die Version zum Zeitpunkt der Erstellung dieser Dokumentation ist “01.02.00“.
Der Versionsstring ist somit 8 Zeichen lang, im Speicher müssen mindesten 9
Zeichen reserviert sein.
4 Fehlermeldungen
Die implementierten Fehlermeldungen beschränken sich auf Fehler in der
Kommunikation zum Kartenleser und auf Fehler am Kartenleser selbst.
Die Fehler Codes:
0 Kein Fehler
1 Checksumme falsch
2 Startzeichen Telegramm unbekannt(bekannt: ACK,SOH und STX, NAK,DC4)
3 NAK empfangen
4 Unbekannter Fehler
5 Keine Antwort auf das Polling
6 Connect- oder Leserinitialisierungsfehler
7 Lesefehler: Der Leser konnte die Karte nicht richtig lesen.
5 Einträge in der Registry

Für die Einträge in der Registry steht die Datei VS_READER_DLL.REG zur
Verfügung.
Der Inhalt:
[HKEY_LOCAL_MACHINE\SOFTWARE\primion Technology AG\READER]
"CardIDMask"="XXXXXXXXXXXXXXXX"
Die Nummer, welche vom Kartenleser übergeben wird, hat 16 Stellen. Mit dem
Parameter CardIDMask können einzelne Zeichen „ausgeblendet“ werden „X“
Bedeutet, das Zeichen an dieser Stelle wird verwendet.
"CommPort"="1"
Mit CommPort wir das Anschlussport für den Kartenleser angegeben.
"Reader_type"="13"
[ "DIN_MASK"="FFFF00FFFF00" ] entfällt in V01.02.01
"Reader_structure"="00011100"
"EC_Filter"="111111111111111100000000"
"Creditcard_Filter"="111111111111111100000000"
Mit diesen Parametern wird der verwendete Kartenleser definiert. Siehe
Beschreibung „Leserdefinitionen“ weiter unten.
Der Key „DIN_MASK“ wird nur noch dann verwendet, wenn die Keys „EC_Filter“
und „Creditcard_Filter“ nicht vorhanden oder nicht richtig definiert sind.
ã2003 primion Technology AG
Implementierung der VS-READER.DLL Seite: 7
Version 01.02.01 vom 25.04.2003
"ConvertToDez"="0"
Mit ConvertToDez wird eingestellt, ob der String (ausgehend von der
Hexadezimalen Darstellung) in eine Dezimalzahl gewandelt werden soll. Diese
Parameter sind für die Entwicklung bestimmt und müssen in den hier
angegebenen Werten eingestellt sein.
"ExtensionLength"="2"
Je nach PC und Protokollart (RS485 oder RS232) kann es sein dass dieser Wert
variiert. In den allermeisten Fällen wird der Wert „2“ funktionieren. Wenn
Übertragungsfehler auftreten sollten, kann der Wert auf „1“ eingestellt werden.
"PollingDelay "="100"
In diesem Abstand wird das Polling Telegramm gesendet.
"TimeOutDelay"="300"
Verzögerung des Polling nach Empfang einesfehlerhaftem Telegrammes.
"ReadTeleDelay"="50"
Warten auf das Telegramm nach dem Polling.
5.1 Leserdefinitionen
5.1.1 Reader_type
Die mit * gekennzeichneten Leser können mit der DLL nicht verwendet werden.
0 Magnetleser / effeff berührungsloser Leser
1 Infrarotleser
2 Wiegandleser 56 Bit
3 Wiegandleser 40 Bit
4 Codatexleser
5 32 Bit Induktivleser
6 65 Bit Induktivleser mit DIN Auswertung
7 65 Bit Induktivleser mit SAV Auswertung
8 65 Bit Induktivleser mit effeff Karten
9 Indalaleser mit Magnetschnittstelle
10 Indalaleser mit Wiegandschnittstelle
11 Nedapleser
*12 Handkey Leser
13 Legicleser
14 Chipkartenleser (effeff)
15 KABA Nova Leser
16 Cardkey Leser
17 U-Key Leser
18 Codatex Leser mit DIN Auswertung
*19 ET80
*20 BENZING / KABA BEDAS 9120 Leser
*21 Giro Vend Leser
22 Wiegandleser 34 Bit
23 Deisterleser
24 Northern - Leser (berührungslos)
ã2003 primion Technology AG
Implementierung der VS-READER.DLL Seite: 8
Version 01.02.01 vom 25.04.2003
25 Cardkey - Leser berührungslos (von Cotag)
26 Magnetleser mit "SIPASS alt" Codierung
27 Mifare - Leser von Deister
28 Keri – Leser
*29 Barcodeleser
30 HID-Leser 35 Bit Codierung
31 HID-Leser 37 Bit Codierung
*32 HID-Leser 34 Bit Codierung
*33 Telekom für GO und GLAZ Nummer
*34 DOM 41 Bit Wiegand
*35 effeff RS485 B1 Leser
*36 Kobil B1 Leser RS232
37 Deisterleser 46 Bit
38 BVK – Leser
39 KSF - Leser
5.1.2 Reader_Structure
Bit 0 Telekom Chipkartenleser mit GO Nummer
Bit 1 TN codierte Karten
Bit 2 16 (0) oder 24 (1) Zeichen bei Magnet DIN lesen
Bit 3 CRC Prüfung bei DIN Karten
Bit 4 Einsteckleser (0) / Durchzugsleser (1)
Bit 5 Clock / Daten (0) oder Wiegandschnittstelle (1)
Bit 6 Rückwärtslesen erlaubt ?
Bit 7 Invertiere die Datenleitung (effeff - Leser)
Hier wird von rechts nach links gezählt! (.....Bit2 Bit1 Bit0)
5.1.3 DIN_MASK
Hier können für EC und Kreditkarten Lesefilter eingegeben werden.
Die ersten 6 Zeichen sind für EC- Karten, die folgenden 6 Zeichen sind für
Kreditkarten. In den meisten Fällen wird der Defaultwert stimmen!
Der Defaultwert ist FFFF00FFFF00.
Die DIN_MASK wird nur bei den Lesern 0, 6, 13, 14, 15, 17 und 38 und auch nur
bei DIN oder DIN/SAV codierten Karten verwendet.
Jedes Zeichen steht für 4 Bits und wird im hexadezimalen Format angegeben.
Die Karte liefert 24Byte an den Kartenleser, mit dem Lesefilter kann bestimmt
werden, welche 16 Bytes der 24 Bytes als Ausweisnummer verwendet werden.
Der Lesefilter wird bitkodiert von links nach rechts gelesen, wobei das erste Bit
dem ersten Byte von der Karte entspricht. Eine 1 bedeutet, dieses Byte wird für
die Ausweisnummer verwendet, eine 0 bedeutet, dieses Byte wird für die
Ausweisnummer nicht verwendet.
Allerdings wird bei der Umsetzung von Binär in Hex die Zeichenfolge in 8
Zeichenblöcke aufgeteilt. Das erste Zeichen entspricht Bit0 für die Hexcodierung,
das Zweite Bit1 usw.
Beispiel:
ã2003 primion Technology AG
Implementierung der VS-READER.DLL Seite: 9
Version 01.02.01 vom 25.04.2003
Lesefilter EC-Karte:
0011 0110 1111 1010 1100 1111
Hieraus wird:
01101100 01011111 11110011
DIN_MASK Teil 1: 6C5FF3
Lesefilter Kreditkarte:
0101 1010 1100 1111 1101 1011
Hieraus wird:
01011010 11110011 11011011
DIN_MASK Teil 2: 5AF3DB
DIN_MASK: : 6C5FF35AF3DB
Auch in der DLL Version 10.02.01 bleibt dies erhalten. Auch der Key wird aus der
Registry gelesen, es sei denn die beiden folgenden Keys sind in der Registry
richtig eingetragen
5.1.3.1 EC_Filter
Hier wird der Lesefilter für EC- Karten eingetragen.
Der Lesefilter wird bitkodiert von links nach rechts gelesen, wobei das erste Bit
dem ersten Byte von der Karte entspricht. Eine 1 bedeutet, dieses Byte wird für
die Ausweisnummer verwendet, eine 0 bedeutet, dieses Byte wird für die
Ausweisnummer nicht verwendet.
5.1.3.2 Creditcard_Filter
Hier wird der Lesefilter für Kreditkarten eingetragen.
Die vorgehensweise ist gleich wie bei „EC_Filter“.
6 Anlagen
Dieser Dokumentation sind beigefügt:
READER_DLL.H
READER_DLL.CPP
VS_READER_DLL.REG
VS_READER.DLL
Die READER_DLL.H Datei enthält alle notwendigen Deklarationen und
Definitionen um die DLL in eine Applikation zu integrieren. Ausserdem steht hier
die Deklaration einer Beispielklasse.
In der READER_DLL.CPP steht die Implementierung der Beispielklasse.
VS_READER_DLL.REG enthält die Eintragungen für die Registry
VS_READER.DLL in der Version 01.02.00
  Mit Zitat antworten Zitat
BigBen

Registriert seit: 12. Dez 2007
Ort: Nassenfels
11 Beiträge
 
#2

Re: Probleme bei DLL - Rückgabewert

  Alt 12. Dez 2007, 11:38
Also das Prog hab ich zum Laufen gebracht:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
   theAuswIDT: PChar;
   theLength: integer;
   theTimeOutMilliSeconds: integer;
begin
  Edit1.Text := IntToStr(_ReadReaderStartStop(theAuswIDT, theLength, theTimeOutMilliSeconds));
end;
Jetzt allerdings kommt folgende Fehlermeldung:

Im Projekt Projekt1.exe ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 00328CC6 in Modul 'VS_READER.dll'. Schreiben von Adresse 004288B0' aufgetreten.

Muss ich irgenwelche Berechtigungen beachten, oder woher kommt diese Meldung?

Gruß
Benny
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: Probleme bei DLL - Rückgabewert

  Alt 12. Dez 2007, 12:07
Wie wäre es denn mit ....

1. lokale Variablen zu initialisieren und nicht einfach deinen letzten RAM Schrott beim Aufruf mitzugeben?
2. theAuswIDT Speicher zu zu weisen und der am besten...
3. ... noch soviel Speicher bekommen hat, wie du in theLength angibst?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Probleme bei DLL - Rückgabewert

  Alt 12. Dez 2007, 12:08
Zitat:
theAuswIDT sollte mindestens 17 char lang sein, entsprechend theLength auf 16
stehen. Eine Überprüfung, ob der übergebene Speicherbereich gültig ist, findet in
der DLL nicht statt.
Steht doch da
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
BigBen

Registriert seit: 12. Dez 2007
Ort: Nassenfels
11 Beiträge
 
#5

Re: Probleme bei DLL - Rückgabewert

  Alt 12. Dez 2007, 12:41
Danke für die schnelle Antwort, jedoch immer noch folgende Fehlermeldung:

Project1
---------------------------
Zugriffsverletzung bei Adresse 00328CC6 in Modul 'VS_Reader.dll'. Schreiben von Adresse 00454C84.



Die Variablen hab ich jetzt mit Werten belegt:


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
   theAuswIDT: PChar;
   theLength: integer;
   theTimeOutMilliSeconds: integer;
begin
   theAuswIDT := '17';
   theLength := 16;
   theTimeOutMilliSeconds:= 300;
   _ReadReaderStartStop(theAuswIDT,theLength,theTimeOutMilliSeconds);
   Edit2.Text := theAuswIDT;
   Edit3.Text := IntToStr(theLength);
   Edit4.Text := IntToStr(theTimeOutMilliSeconds);
 end;

end.
Ich bin da nich so fit in Delphi. Vielleicht könnt ihr mir ja n paar Codeschnipsel zukommen lassen, wenn ich total auf m Holzweg bin.

Grüße
Benny
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Probleme bei DLL - Rückgabewert

  Alt 12. Dez 2007, 12:52
Versuch es mal so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
   theAuswIDT: string;
   theLength: integer;
   theTimeOutMilliSeconds: integer;
begin
   SetLength(theAuswIDT,17);
   theLength := 16;
   theTimeOutMilliSeconds:= 300;
   _ReadReaderStartStop(PChar(theAuswIDT),theLength,theTimeOutMilliSeconds);
   SetLength(theAuswIDT,StrLen(PChar(theAuswIDT)));
   Edit2.Text := theAuswIDT;
   Edit3.Text := IntToStr(theLength);
   Edit4.Text := IntToStr(theTimeOutMilliSeconds);
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: Probleme bei DLL - Rückgabewert

  Alt 12. Dez 2007, 12:56
Zitat von BigBen:
Die Variablen hab ich jetzt mit Werten belegt:
Was ist denn an einem String mit 2 Ziffern (1 & 7) bitte 16 Zeichen lang? Liest du überhaupt genau?
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Probleme bei DLL - Rückgabewert

  Alt 12. Dez 2007, 12:56
wie Deddy oder:
Delphi-Quellcode:
var theAuswIDT: PChar
     ...
begin
  theAuswIDT:=strAlloc(17); //17 Bytes Speicher reservieren
  ...

  strdispose(theAusWIDT); //und am ende wieder freigeben
end;
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#9

Re: Probleme bei DLL - Rückgabewert

  Alt 12. Dez 2007, 12:57
Zitat von sirius:
wie Deddy oder:
Die Methoden StrDispose() und StrAlloc() sind depreciated und sollten nicht mehr angewendet werden. Sie wurden vollständig mit den PChar() Konvertierungen ersetzt.

Zitat von OH:
StrAlloc ist veraltet, da AnsiStrings (lange Strings) implizit nullterminiert sind und dynamisch zugewiesen werden.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Probleme bei DLL - Rückgabewert

  Alt 12. Dez 2007, 12:58
Ich meine, irgendwo gelesen zu haben, dass StrAlloc/StrDispose veraltet sein sollen, kann mich aber auch fürchterlich irren. Funktionieren sollte es jedenfalls

[edit] Mal wieder zu spät [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz