Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Erstellen einer Tabelle mit Sinus- und Cosinus Werten (https://www.delphipraxis.net/156498-erstellen-einer-tabelle-mit-sinus-und-cosinus-werten.html)

hamptoncourt 4. Dez 2010 10:48

Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
Hallo Leute,

ich habe mal wieder eine Frage ... wir haben eine neue Projektaufgabe bekommen, in der es um die Programmierung einer mathematischen Berechnung von Sinus und Cosinus Werten geht.

Dabei soll zu Programmstart eine Tabelle geschrieben und in dem Programmordner abgelegt werden. In dieser Tabelle sollen alle Cos und Sin Werte von 0° bis 90° in 1/10° Schritten aufgeführt sein.
Auf dem Formular sollen dann nur ein Editfeld, ein Button und zwei Labels liegen. In dem Editfeld wird eine Gradzahl eingegeben. Bei Klick auf dem Button, soll laut Aufgabenstellung folgendes geschehen:

1. das Maskeditfeld den Winkel in Grad übernehmen
2. der Winkel wird in Rad umgewandelt
3. der Quadrant aus den Grenzwinkeln soll bestimmt werden
4. für den Quadranten soll der Index und das Vorzeichen (integer) für sin und cos in einer case Anweisung festgelegt werden
5. per Zugriff auf das Array soll der Funktionswert ermittelt werden
6. die Werte sollen in einem Labelfeld ausgegeben werden.

So, und da komme ich etwas ins straucheln :-/
Zunächst, gibt es einen Befehl, der den Winkel in Rad umwandelt? Oder muss das mit Hilfe einer Formel gelöst werden. Ist ja nicht so schwierig, aber wenn ich mir das Tippen der Formel mit einem einfachen Befehl ersparen kann, ist das ja schonmal was ...
Zu dem Index und den Vorzeichen stand hier auch noch etwas, dass dazu Tabellen geschrieben werden sollen, um das ganze nicht zu Zeitaufwändig zu machen :shock:
Aber wie schreibe ich denn, dass sich gleich bei Programm start diese Tabelle erstellt? Und wie, dass das Programm darauf zugreift und die Werte abgreift??? Ich bin da irgendwie ein wenig überfordert :-( Kann mir da jemand helfen???

Gruß
Hamptoncourt

Wolfgang Mix 4. Dez 2010 15:07

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
http://www.delphibasics.co.uk/RTL.asp?Name=DegToRad
http://www.delphibasics.co.uk/RTL.asp?Name=RadToDeg
oder selber machen:
alpha(Grad)/alpha(Bogen) = 360/2 PI = 180/PI

hamptoncourt 5. Dez 2010 11:53

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
Hey, danke erstmal für den Tipp ....

Aber wie geht denn das jetzt eigentlich mit der Tabelle??? Bin da echt ein wenig verzweifelt ... Unser Prof erklärt mal wieder nix und will, dass wir das alles aus dem Kopf können. Kann mir da jemand nen Tipp geben oder nen Lösungsvorschlag??? Dass er ne Tabelle erstellt, die Zeilen und Spalten füllt, und dass er dann später wieder darauf zugreift um den Wert abzulesen ...

sx2008 5. Dez 2010 12:03

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
0 bis 90 Grad in 0,1 Grad Schritten - das sind dann wohl 901 Einzelwerte, oder?
Delphi-Quellcode:
type
  TSinCosTabelle = array[0..900] of double;
var
  SinusTabelle : TSinCosTabelle;
  CosinusTabelle : TSinCosTabelle;

for i := 0 to 900 do
begin
  SinusTabelle[i]  := Sin( ???);
  CosinusTabelle[i] := Cos( ??? );
end;

hamptoncourt 5. Dez 2010 13:11

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
hey cool, danke ... allerdings hab ich noch ein Problem mit bem Speichern des Array ... Muss ich da nicht einfach SaveArray setzen??? Ich hab das so versucht, wie es bei "Delphi Treff" stand. Aber der sagt mir, das Identifier not foun "SaveArray" .... hä??? Im FAQ stand da aber nix, das ich das vorher festlegen muss. Oder ist das ein Unterschied zwischen Delphi und Lazarus??? In der Uni muss ich mit Delphi programmieren, zuhause mach ich das aber mit Lazarus ...

Wolfgang Mix 5. Dez 2010 13:16

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
Müsste wohl heissen (ungeprüft):
Delphi-Quellcode:
for i := 0 to 900 do
begin
  SinusTabelle[i] := DegToRad(Sin( 0.1*i));
  CosinusTabelle[i] := DegToRad(Cos( 0.1*i ));
end;

hamptoncourt 5. Dez 2010 13:26

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
Ja, soweit hab ich das mit der Berechnung auch ... aber er soll es ja als externe Datei speichern ... z.B. als test.dat .... Wenn ich aber SafeArray benutze, sagt er mir, dass er die nicht kennt. Muss ich dann erst als Variable "SafeArray : TSafeArray" Festlegen??? Aber als was leg ich dann den Typ TSafeArray fest??? Oder mache ich das grad total falsch ... ??? Ich bin verwirrt *lol*


type
TSinCosTabelle = array[0..900] of double;
TArrayData = array of string[20];
var
ArrayData: TArrayData;
SinusTabelle : TSinCosTabelle;
CosinusTabelle : TSinCosTabelle;
i : Integer;

for i := 0 to 900 do
begin
SinusTabelle[i] := DegToRad(Sin( 0.1 * i));
CosinusTabelle[i] := DegToRad(Cos( 0.1 * i ));
end;

SaveArray(ExtractFilePath(Application.ExeName) + 'test.dat', ArrayData);
end;

DeddyH 5. Dez 2010 13:42

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
Du könntest das Array z.B. in einer typisierten Datei speichern (file of Datentyp). BTW: Crossposts bitte künftig verlinken.

hamptoncourt 5. Dez 2010 15:12

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
typisierte Datei??? Verstehe grad nicht, wie das funktioniert??? Kann mir vielleicht jemand nen Quellcode dazu schicken, wie das bei mir aussehen müsste???

DeddyH 5. Dez 2010 15:14

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
Tutorial zu typisierten Dateien

bjd 5. Dez 2010 15:21

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
Du solltest dir auf DT auch das Tutorial zu Funktionen durchlesen. In dem von dir angesprochenen Tipp steht ziemlich klar, dass SaveArray eine Procedure ist, die du zuerst definieren musst. Wenn du das so machst, ist fast schon die ganze Arbeit getan, du musst nur noch deinen Array-Typ angeben.

hamptoncourt 5. Dez 2010 16:38

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
Hey ... stimmt. Habe ich auch im Tutorium jetzt gesehen, dass es eine Prozedur ist ...

Aber nochmal zu dem Tipp mit dem typisierten Dateiformat ... Das scheint ja so ganz übersichtlich zu haben. Das Tutorial ist echt gut verständlich ... Aber eine Frage hab ich doch noch ...

Wenn ich das mache z.B. mit

for i := 0 to 900 do write .....

wie schreibe ich das denn dann, wenn zwei Daten gesetzt werden sollen??? Schreibe ich beide Daten hintereinander in der einen Klammer, oder gebe ich zwei Anweisungen "for ... do write" in dem Quelltext ein???

DeddyH 5. Dez 2010 16:46

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
Das bleibt Dir überlassen. Aus Vereinfachungsgründen könntest Du die Daten als Paare in einem Record (Sinus- und Cosinuswert) ablegen und diesen dann speichern bzw. auslesen. Wichtig ist lediglich, dass Du selbst den Überblick behältst.

Kenny77 5. Dez 2010 19:03

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
hehe glaube du studierst maschinenbau in bielefeld oder?
Nungut , da meines Wissens nach die Tabelle als Textdatei erstellt und dann erst in ein Array geladen werden soll zeig ich dir einfach mal meine Lösung.
Aber die Aufgabe umfasste nur den Teil der Werte Ausgabe und Berechnung, deswegen lass den Zeichnen Teil lieber weg.

Am besten nutzt Du das nur als Hilfe und machst es selber. Die Prüfung wird sich sonst an Dir rechen.

hier meine Lösung :

Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask, Buttons, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    BitBtn1: TBitBtn;
    MaskEdit1: TMaskEdit;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  function SinCos(x:double):double;
  function IndexVorzeichen(x:double):double;

var
  Form1: TForm1;
  Werte:array[0..900] of double;
  Q :integer;
  f:textfile;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var s:string;
    x : integer;
begin
// Sinuswerte als txt datei speichern
  assignfile(f, 'Werte.txt');
  rewrite(f);
  for x := 0 to 900 do
  begin
  s:=floattostr(sin((x/10)*(Pi/180)));
  writeln(f,s);
  end;
  closefile(f);
end;


procedure TForm1.Button1Click(Sender: TObject);
var s : string;
    x,v, Ym, ySin, yCos, xSin , xCos : integer;
    winkel, Rad, SinWert, CosWert : double;

begin
// Txtfile auslesen und in Array speichern
  assignfile(f, 'werte.txt');
  reset(f);
  for x := 0 to 900 do
  begin
  readln(f, s);
  werte[x]:=strtofloat(s);
  end;
  closefile(f);
// Eingelesen

// Einlesen des Edit in Variable
  winkel := strtofloat(maskedit1.Text);
  if winkel > 360 then ShowMessage('falsche Eingabe');
// Umrechnen des Winkels in Rad
  Rad := winkel*Pi/180;
// Quadrant aus Winkeln bestimmen
  case (round(10*winkel)) of
    0..900 :     begin Q := 1;
                        v := 1;
                  end;
    901..1800 :  begin Q := 2;
                        v := -1;
                  end;
    1801..2700 : begin Q := 3;
                        v := -1;
                  end;
    2701..3600 : begin Q := 4;
                        v := 1;
                  end;
  end;

  SinWert := IndexVorzeichen(10*winkel); // ?????????????????
  CosWert := v*sqrt(1-(SinWert*SinWert));

  label1.Caption:='SinWert : '+floattostr(SinWert);
  label2.Caption:='CosWert : '+floattostr(CosWert);
  label3.Caption:='Rad : '+floattostr(Rad)+' rad';
  label4.Caption:='Quadrant : '+floattostr(Q);

// #################### Funktionen zeichnen ######################
Ym:=Image1.Height div 2;
Image1.Canvas.FillRect(rect(0,0,image1.Width,image1.Height));
// Koordinatenkreuz
Image1.Canvas.MoveTo(0,Ym);
image1.Canvas.LineTo(image1.Width,Ym);


  for Q := 1 to 4 do // zahler für Ober/Unterhalb der x-Achse(Case anweisungen)
  begin
    for x:=0 to 900 do // zahler für Array-Pointer
    begin
//x-Koords
      xSin := (Q-1)*90+round(x/10);
      xCos := xSin-90;
       if xCos < 0 then                        //x-Pixel < 0 ans Ende hängen
          xCos := xCos+360;
//y-Koords
      ySin := round(Ym-SinCos(x));
      yCos := round(Ym-SinCos(x));

//Zeichnen von Auswahl
      image1.Canvas.MoveTo(round(winkel),0);
      image1.Canvas.LineTo(round(winkel),200);
//Zeichnen der Funktionen
      image1.Canvas.Pixels[xSin,ySin]:=clred;
      image1.Canvas.Pixels[xCos,yCos]:=clHighlight;
    end;
  end;
end;

//################################ Index+Vorzeichen
function IndexVorzeichen(x:double):double;
var a : integer;

begin
a:=round(x);
  case Q of
        1: begin result := werte[a];
                  end;
        2: begin result := werte[1800-a];
                  end;
        3: begin result := -werte[a-1800];
                  end;
        4: begin result := -werte[3600-a];
                  end;
      end;
end;

//################################ Sinus-Fkt
function SinCos(x:double):double;
var a : integer;

begin
a:=round(x);
  case Q of
        1: begin result := 90*werte[a];
                  end;
        2: begin result := 90*werte[900-a];
                  end;
        3: begin result := -90*werte[a];
                  end;
        4: begin result := -90*werte[900-a];
                  end;
      end;
end;

end.

hamptoncourt 5. Dez 2010 20:07

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
*lol* woher weist du das??? Nehme an, du bist auch in BI???

Das ist ja cool ... Interessanter Lösungsweg ... Werde ich mal mit rum spielen ...

Aber sag mal, in unserer Aufgabenstellung steht noch was von wegen "Erstellen sie Tabellen vor Index und Vorzeichen" Damit die Aufgabe nicht zu Zeitaufwändig wird ... aber wie habe ich denn das zu verstehen??? Hätte das mit den Vorzeichen so ungefähr wie du gemacht ... Wozu brauche ich denn da noch zusätzliche Tabellen???

greetz

Kenny77 5. Dez 2010 20:22

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
Es geht eigentlich darum das ein leistungsschwacher Prozessor ( sagen wir für ne Maschine ) damit arbeiten kann und nicht zwingend ein Pentium4 für ne Bohrmaschine genutzt wird. falls du verstehst was ich meine :-D

Nun zur Frage selbst :

Das mit der Tabelle (Index Vorzeichen) ist auch gut möglich aber irrelevant.
Denke du kannst das ruhigen gewissens auch so machen wie ich.
Er hat mir das auch abgezeichnet.

nur versuch es villeicht nicht mit

Code:
CosWert := v*sqrt(1-(SinWert*SinWert));
zu lösen, sondern versuch wie den Sinuswert auch den Cosinuswert aus der Tabelle zu lesen und zu berechnen.

Ähnlich wie ich es für das zeichnen gemacht habe
Code:
ySin := round(Ym-SinCos(x));
yCos := round(Ym-SinCos(x));

hamptoncourt 5. Dez 2010 20:39

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
*lach* ja gut, ich verstehe was du meinst ;-) sehr anschauliches Beispiel ;-)

Ja, ich merk schon, ich bin halt doch mehr für Arbeiten in der Konstruktion geeignet (Berechnungen, Konstruieren etc.) als für den Bereich der Informatik ... Aber ist halt Pflicht :-/

Ja, habe das auch schon anders für mich umgesetzt. Hatte mir deinen Lösungsansatz durchgeguckt und es dann etwas abgeändert ... jetzt funzt es auch endlich mit der Tabelle ... jippiiiiii :-D

Mit der Tabelle dachte ich auch eher, weil es explizit nochmal in der Aufgabenstellung erwähnt wurde :-S Werde es aber auch mal so versuchen ;-)

Kenny77 5. Dez 2010 20:54

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
Schön das ich dir etwas helfen konnte.
Aber wie gesagt für die Prüfung ist es NOTWENDIG das selber zu machen und zu verstehen was passiert und warum etwas passiert.
Bei Fragen zu den Paktikas meld Dich einfach bei Kai im A-Zug.
Hab die Praktikumsaufgaben meist 2 Tage nach erscheinen schon fertig.

Gruß Kai

P.S. die nächste Aufgabe hab ich auch schon fertig :-D

// @Admins -> Sry wegen dieser Unterhaltung im Forum

hamptoncourt 6. Dez 2010 08:04

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
Manno ... jetzt läuft es doch wieder nicht :-( Ich mache das glaub ich komplett falsch ... also er erstrellt die Datei, alles Super ... aber sobald ich in die Box nen Wert eingebe und auf den Button klicke, dass er das berechnen soll, kackt der ab ...

@ Kenny: Ich verstehe das auch nicht ganz, wie du das gemacht hast mit den Vorzeichen und so ... ne case Anweisung ist klar ... der guckt in welchem Quadranten und berechnet dann ob - oder + und so ... Aber der weiß doch in dieser Anweisung gar nicht, was x ist, oder???

Auf jeden Fall: Sobald ich den Button zum berechnen klicke, will er die Daten aus der TXT Datei auslesen. dann kommt aber gleich ein EConvertError:

" " is an invalid float

hmmm ... vielleicht habe ich es jetzt auch komplett falsch aufgebaut. Hier mal der Quelltext zum Auslesen der Daten ...

Delphi-Quellcode:
var
   s, c : String;
   x, v, i : Integer;
   rad, ErgSin, ErgCos : double;
begin
  assignfile(f,'Werte.txt');
  reset(f);

  for x:=0 to 900 do
   begin
    readln(f, s, c);
    sinWert[x] := strtofloat(s);
    cosWert[x] := strtofloat(c);
   end;

  closefile(f);
Hoffe, mir kann da noch jemand helfen ...

hamptoncourt 6. Dez 2010 08:37

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
Update:
Wenn ich statt nur einer Tabelle 2 schreibe (eine mit nem Sinuswert, die anderen mit nem Cosinuswert) dann funktioniert alles ohne Probleme. Er schmeißt sogar die richtigen Werte raus ... voll cool ... aber warum funktioniert das nicht, wenn er daraus eine einzige Tabelle schreiben soll???

Blup 6. Dez 2010 09:33

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
Mit "readln" werden vermutlich alle Zeichen bis zum Zeilenende in die erste String-Variable gelesen. Da bleibt für die zweite Variable nichts übrig.
Zwei Variablen in einer "readln"-Anweisung zu lesen funktioniert nur mit Variablen fester Länge.
Wie wird den die Datei erstellt?

hamptoncourt 6. Dez 2010 09:42

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
Axo, ok ... ja, die Datei hatte ich auch mit writeln geschrieben ...

DeddyH 6. Dez 2010 09:49

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
Und wie? Beide Werte in eine Zeile oder untereinander? Ich hätte mir die Stringumwandlung übrigens gespart und stattdessen dann doch lieber einen Record deklariert und diesen dann in einer typisierten Datei abgelegt, aber das muss ja jeder selber wissen.

hamptoncourt 6. Dez 2010 09:53

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
Also sieht mein Quellcode aus, wie ich ihn jetzt für zwei Datein habe ...

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
   s, c : String;
   x : Integer;
begin
   assignfile(f,'SinWerte.txt'); // Erste Tabelle erstellen
   rewrite(f);

   for x:=0 to 900 do
    begin
     s:=floattostr(sin((x/10)*(pi/180)));
     write(f, s);
    end;

    closefile(f);

   assignfile(f,'SinWerte.txt');  // Zweite Tabelle erstellen
   rewrite(f);

   for x:=0 to 900 do
    begin
     c:=floattostr(cos((x/10)*(Pi/180)));
     write(f, c);
    end;

    closefile(f);

end;
Und so hatte ich es versucht, das in eines zu packen ...

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
   s, c : String;
   x : Integer;
begin
   assignfile(f,'Werte.txt');
   rewrite(f);

   for x:=0 to 900 do
    begin
     s:=floattostr(sin((x/10)*(pi/180)));
     c:=floattostr(cos((x/10)*(Pi/180)));
     write(f, s, c);
    end;

    closefile(f);

end;
Aber hast recht, der schreibt dann ja in eine Zeile z.B.
0,001745328365890,99999847691328

Wenn er die komplette Zeile einmal so liest, dann kommt nur blödsinn raus ...

DeddyH 6. Dez 2010 09:56

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
Siehste, das ist der Unterschied zwischen write und writeln ;)

hamptoncourt 6. Dez 2010 10:03

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
Ah, aber jetzt schein ich es fast zu haben ... du hattest mich da auf ne Idee gebracht, mit dem "untereinander"-schreiben ;-)

Habe das jetzt so geschrieben, dass er die Werte untereinander schreibt, abwechselnd Sinus und Cosinus ... das hat auch gut geklappt. Nur eine Datei und er schmeißt die richtigen Werte raus ... aber nun scheint das Programm nurnoch einmal zu laufen :-( wenn ich eine neue Zahl eingebe und wieder auf den Button klicke, dann kommt nen Error und das Programm schließt sich :-( ... mist *lol*

DeddyH 6. Dez 2010 10:04

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
Und welcher Error? :glaskugel:

hamptoncourt 6. Dez 2010 10:08

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
"Project project1.exe raised exception class 'RunError(5)'"

Dann wechselt er in die Zeile "for x:=0 to 900 do begin", dem Beginn der Schleife zum Auslesen der Daten ...

Delphi-Quellcode:
assignfile(f,'Werte.txt');
  reset(f);

  for x:=0 to 900 do
   begin
    readln(f, s);
    sinWert[x] := strtofloat(s);
    readln(f, c);
    cosWert[x] := strtofloat(c);

   end;

DeddyH 6. Dez 2010 10:12

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
Und wenn Du einmal einen absoluten Pfad angibst?

Blup 6. Dez 2010 10:25

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
RunError(5)
Vermutlich Zugriff verweigert weil "closefile(f)" an einer Stelle vergessen.

DeddyH 6. Dez 2010 10:28

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
Das kann es auch sein, oder eben das aktuelle Arbeitsverzeichnis ist falsch.

hamptoncourt 6. Dez 2010 10:31

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
och gott war das einfach *lach* Ich bin ja auch nen trottel ...

danke Blup ... da fehlte tatsächlich das closefile(f) zum schluss ... argh ... na gut, also alles in Ordnung jetzt ;-) Programm läuft so wie es laufen soll ... Ich danke euch allen vielmals für die Hilfe ...

Sir Rufo 6. Dez 2010 10:43

AW: Erstellen einer Tabelle mit Sinus- und Cosinus Werten
 
Aus diesem Grund sollte man hierbei auch immer mit try..finally arbeiten.

Delphi-Quellcode:
AssignFile( f, FileName );
Rewrite( f );
try
  // irgendwas mit f machen
finally
  CloseFile( f );
end;
Wenn man sich das angewöhnt, vergisst man das Schließen oder Free auch nicht mehr.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:49 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