AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
nein. ich dachte ich hätte den Fehler dort entdeckt^^ der Rest ist doch noch da.... ich habs bloß Auskommentiert:angel:
|
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Der Fehler liegt darin, dass Du die Funktion aufrufst, ohne vorher zu prüfen, ob das aktuell angeklickte Label "leer" ist.
|
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Delphi-Quellcode:
:?: sorry, der Server stürzt die ganze Zeit ab.... -.-
procedure TForm1.Label9Click(Sender: TObject);
var Kombination: MyStringArray; begin Kombination[0] := Label7.Caption; Kombination[1] := Label8.Caption; Kombination[2] := Label9.Caption; if IsFieldEmpty(Label9.Caption) then begin Label9.Caption := WriteToField(GPlayer); if CheckForWin(Kombination) then begin Label9.Caption := ''; ShowMessage(IntToStr(GPlayer)+' hat gewonnen!'); GPlayer := 1; end else begin ChangePlayer; end; end; end; |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Du schreibst ja auch den alten Wert ins Array und änderst dann erst.
|
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
klappt auch nicht so richtig.... er zeigt mir nicht wer gewonnen hat und stoppt das spiel auch nicht....
|
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Dann machst Du wohl was falsch.
|
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
ich probiers noch mal aus.... hab ja gleich feierabend.... ich schau mal was da los ist
|
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Was funktioniert denn jetzt genau nicht?
Und worauf man hinweisen wollte war, dass man Zitat:
Delphi-Quellcode:
(not IsFieldEmpty(AIndex[1]))
|
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Mein Ausbilder hat mir jetzt eine Nachricht geschickt nachdem er gestern kurzen BLick auf mein Programm geworfen hat....
ich soll jetzt ein 2 dimensionales Array machen. Ist ja alles wunderbest. jetzt soll ich aller´dings auch eine Procedure machen, das Daten aus dem Array in die GUI schreibt. Über einen kleinen Tipp wäre ich dankbar. |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
In den Beiträgen #4 und #5 gibts nen Vorschlag mit nem 2D-Array.
Zum Schreiben in die GUI: Wenn ich es richtig mitbekommen hatte, benutzt du für die Anzeige ja 9 Labels, die mit Label1 bis Label9 durchnummeriert sind. Die Ausgabe würde ich dann wie folgt probieren (sicher nicht die schönste Variante, vielleicht hat ja noch jemand nen besseren Vorschlag):
Delphi-Quellcode:
*: In diese Zeile kommt dann hin, was immer du den einzelnen Labels zuweisen möchtest. In meinem Beispiel würden die Labels jetzt die Beschriftung 1 bis 9 zugewiesen bekommen.
procedure TForm1.Ausgabe;
var lLabel: TLabel; i,j: Integer; lNummer: Integer; begin for i := 0 to 2 do begin for j := 0 to 2 to begin lNummer := (i + 1) + (j * (j + 1)); lLabel := TLabel(FindComponent('Label'+IntToStr(lNummer))); lLabel.Caption := 'IntToStr(lNummer)'; //* end; end; end; EDIT: Das hier: "IntToStr((i+1)*(j+1))" haut noch nicht hin, da ja z.B. bei (i = 1 , j = 0) und (i = 0 , j = 1) das selbe Label gefunden wird. EDIT #2: lNummer hinzugefügt und die Berechnung korrigiert ^^ |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Wie wäre es denn mit dem irgendwann meinerseits angesprochenen Record?
|
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
davon habe ich ja noch nie was gehört.... also gelesen schon aber ich weiß nicht wozu es da ist?!
|
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
hallo,
sry weiß nicht wie ich einen thread erstelle..blick grad nicht nur :S ehh kann mir mal jmd zu den grenzen der informatik aufklären? welche grenzen gibt es? und dazu ein paar beispiele? :) danke |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Du kannst damit vereinfacht gesagt Daten in einer Struktur zusammenhalten.
Delphi-Quellcode:
Somit hast Du in diesem Beispiel eine Integer und einen String in einer Struktur (einem Record) vom Typ TTestRec zusammengefasst. Auf die enthaltenen Felder kannst Du wie bei Klassen mit der Punkt-Notation zugreifen.
type
TTestRec = record IntVal: integer; StringVal: string; end; var Rec: TTestRec; begin Rec.IntVal := 42; Rec.StringVal := 'Männer und Frauen passen einfach nicht zusammen.'; end; |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Passt hier ja nicht so wirklich rein:)
@Deddyh ich werds mal ausprobieren |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
noch mal eben was kleines zum Verständnis...
das mehrdimensionale Array wird einmal von oben nach unten und von links nach recht gelesen oder? muss ihm ja sagen bei welchen Kombis er ein Gewinn haben soll^^ |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Eine Schleife über die 1. Dimension, eine weitere über die 2. und zusätzlich noch die beiden Diagonalen (hier ist dann keine Schleife nötig).
|
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
ja ich mein ja nur das jetzt... das Array würde so gelesen werden
0 1 2 # 0 1 2 oder nicht? |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Das kannst du machen wie du lustig bist, denn egal wie man das Spielfeld dreht, es sind immer die gleichen Gewinnmöglichkeiten.
Aber "von oben[0] nach unten[2] und von links[0] nach rechts[2]" wäre wohl das passendste. |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Du musst mindestens die aktuelle Zeile und Spalte auswerten.
|
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Zitat:
|
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Hi Leute,
ich habe gestern eines der Labels neu machen müssen, da ich irgendetwas eingestellt hatte und es nicht wieder weg ging.... das Label funktionert jetzt aber nicht wie vorher. Die CheckForWin funktion hat inzwischen(oder tut es immer noch) die Felder von oben nach unten verglichen... jetzt aber nicht mehr das ausgetauschte Label! woran kann das liegen? Weiß gerade echt nicht weiter.... und wenn ich schon dabei bin... kann mir jemand sagen, wieso meine Funktion nur die Zeilen von oben nach unten vergleicht? |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
:glaskugel: Welche Funktion, welches Label, wie heißt das neue....? Gedanken lesen können wir noch nicht.
|
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
das neue Label heißt jetzt genauso wie das alte.... Habe die Prozedur von dem alten auch schon komplett gelöscht und neu geschrieben aber er will einfach die CheckForWin Funkion nicht ausführen....
Und ich meinte eben auch die CheckForWin Funktion... @ Deddyh Mein Ausbilder sagte ich soll die Alte davon nehmen weil der Vorschlag von dir zu Kompliziert für mich ist meinte er. |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Du meinst jetzt beim Klick auf das Label, oder? Hast Du die alte Methode denn auch dem neuen Label im Objektinspektor zugewiesen?
|
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
jop hab ich ja alles gemacht.... ich geb dir mal den quelltext.... also den kopletten^^ vielleicht findest du ja auch den Fehler weshalb die funktion nur die Zeilen von oben nach unten vergleicht^^
Delphi-Quellcode:
Ich hoffe dass Du da dzrchsteigst^^
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label8: TLabel; Label9: TLabel; CloseButton: TButton; NewGameButton: TButton; Label10: TLabel; Label7: TLabel; procedure MakeArray; procedure ChangePlayer; function IsFieldEmpty(AIndex:string): Boolean; function CheckForWin(AIndex:array of string): Boolean; function WriteToField(GPlayer:Integer):String; procedure Label1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Label2Click(Sender: TObject); procedure Label9Click(Sender: TObject); procedure Label8Click(Sender: TObject); procedure Label3Click(Sender: TObject); procedure Label4Click(Sender: TObject); procedure Label5Click(Sender: TObject); procedure Label6Click(Sender: TObject); procedure NewGameButtonClick(Sender: TObject); procedure CloseButtonClick(Sender: TObject); procedure Label7Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; GPlayer: Integer; GBuffer: array[1..9] of string; implementation {$R *.dfm} procedure TForm1.ChangePlayer; begin if GPlayer = 1 then begin GPlayer := 2; end else GPlayer := 1; end; function TForm1.CheckForWin(AIndex: array of string): Boolean; begin result := false; begin if (AIndex[1] = AIndex[2]) and (AIndex[2] = AIndex[3]) and (IsFieldEmpty(AIndex[1]) = false) then begin result := true; end; if (AIndex[4] = AIndex[5]) and (AIndex[5] = AIndex[6]) and (IsFieldEmpty(AIndex[4]) = false) then begin result := true; end; if (AIndex[7] = AIndex[8]) and (AIndex[8] = AIndex[9]) and (IsFieldEmpty(AIndex[7]) = false) then begin result := true; end; if (AIndex[1] = AIndex[4]) and (AIndex[4] = AIndex[7]) and (IsFieldEmpty(AIndex[1]) = false) then begin result := true; end; if (AIndex[2] = AIndex[5]) and (AIndex[5] = AIndex[8]) and (IsFieldEmpty(AIndex[2]) = false) then begin result := true; end; if (AIndex[3] = AIndex[6]) and (AIndex[6] = AIndex[9]) and (IsFieldEmpty(AIndex[3]) = false) then begin result := true; end; if (AIndex[1] = AIndex[5]) and (AIndex[5] = AIndex[9]) and (IsFieldEmpty(AIndex[1]) = false) then begin result := true; end; if (AIndex[3] = AIndex[5]) and (AIndex[5] = AIndex[7]) and (IsFieldEmpty(AIndex[3]) = false) then begin result := true; end; end; end; procedure TForm1.CloseButtonClick(Sender: TObject); begin Application.Terminate; end; procedure TForm1.FormCreate(Sender: TObject); begin GPlayer:=1; end; function TForm1.IsFieldEmpty(AIndex:string): Boolean; begin result := false; if AIndex = '' then begin result := true; end; end; procedure TForm1.Label1Click(Sender: TObject); begin if IsFieldEmpty(Label1.Caption) then begin Label1.Caption := WriteToField(GPlayer); MakeArray; if CheckForWin(GBuffer) then begin Label1.Caption := ''; ShowMessage('Spieler ' + IntToStr(GPlayer)+' hat gewonnen!'); GPlayer := 1; end else begin ChangePlayer; end; end; end; procedure TForm1.Label2Click(Sender: TObject); begin if IsFieldEmpty(Label2.Caption) then begin Label2.Caption := WriteToField(GPlayer); MakeArray; if CheckForWin(GBuffer) then begin Label2.Caption := ''; ShowMessage('Spieler ' + IntToStr(GPlayer)+' hat gewonnen!'); GPlayer := 1; end else begin ChangePlayer; end; end; end; procedure TForm1.Label3Click(Sender: TObject); begin if IsFieldEmpty(Label3.Caption) then begin Label3.Caption := WriteToField(GPlayer); MakeArray; if CheckForWin(GBuffer) then begin Label3.Caption := ''; ShowMessage('Spieler ' + IntToStr(GPlayer)+' hat gewonnen!'); GPlayer := 1; end else begin ChangePlayer; end; end; end; procedure TForm1.Label4Click(Sender: TObject); begin if IsFieldEmpty(Label4.Caption) then begin Label4.Caption := WriteToField(GPlayer); MakeArray; if CheckForWin(GBuffer) then begin Label4.Caption := ''; ShowMessage('Spieler ' + IntToStr(GPlayer)+' hat gewonnen!'); GPlayer := 1; end else begin ChangePlayer; end; end; end; procedure TForm1.Label5Click(Sender: TObject); begin if IsFieldEmpty(Label5.Caption) then begin Label5.Caption := WriteToField(GPlayer); MakeArray; if CheckForWin(GBuffer) then begin Label5.Caption := ''; ShowMessage('Spieler ' + IntToStr(GPlayer)+' hat gewonnen!'); GPlayer := 1; end else begin ChangePlayer; end; end; end; procedure TForm1.Label6Click(Sender: TObject); begin if IsFieldEmpty(Label6.Caption) then begin Label6.Caption := WriteToField(GPlayer); MakeArray; if CheckForWin(GBuffer) then begin Label6.Caption := ''; ShowMessage('Spieler ' + IntToStr(GPlayer)+' hat gewonnen!'); GPlayer := 1; end else begin ChangePlayer; end; end; end; procedure TForm1.Label7Click(Sender: TObject); begin if IsFieldEmpty(Label7.Caption) then begin Label7.Caption := WriteToField(GPlayer); MakeArray; if CheckForWin(GBuffer) then begin Label7.Caption := ''; ShowMessage('Spieler ' + IntToStr(GPlayer)+' hat gewonnen!'); GPlayer := 1; end else begin ChangePlayer; end; end; end; procedure TForm1.Label8Click(Sender: TObject); begin if IsFieldEmpty(Label8.Caption) then begin Label8.Caption := WriteToField(GPlayer); MakeArray; if CheckForWin(GBuffer) then begin Label8.Caption := ''; ShowMessage('Spieler ' + IntToStr(GPlayer)+' hat gewonnen!'); GPlayer := 1; end else begin ChangePlayer; end; end; end; procedure TForm1.Label9Click(Sender: TObject); begin if IsFieldEmpty(Label9.Caption) then begin Label9.Caption := WriteToField(GPlayer); MakeArray; if CheckForWin(GBuffer) then begin Label9.Caption := ''; ShowMessage('Spieler ' + IntToStr(GPlayer)+' hat gewonnen!'); GPlayer := 1; end else begin ChangePlayer; end; end; end; procedure TForm1.MakeArray; begin GBuffer[1] := Label1.Caption; GBuffer[2] := Label2.Caption; GBuffer[3] := Label3.Caption; GBuffer[4] := Label4.Caption; GBuffer[5] := Label5.Caption; GBuffer[6] := Label6.Caption; GBuffer[7] := Label7.Caption; GBuffer[8] := Label8.Caption; GBuffer[9] := Label9.Caption; end; procedure TForm1.NewGameButtonClick(Sender: TObject); begin Label1.Caption := ''; Label2.Caption := ''; Label3.Caption := ''; Label3.Caption := ''; Label4.Caption := ''; Label5.Caption := ''; Label6.Caption := ''; Label7.Caption := ''; Label8.Caption := ''; Label9.Caption := ''; GPlayer := 1; end; function TForm1.WriteToField(GPlayer: Integer): String; begin if GPlayer = 1 then begin result := 'X'; end else begin result := 'O'; end; end; end. |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Nö, das sehe ich leider auf Anhieb nicht. Setz doch mal einen Haltepunkt und geh schrittweise durch, ob wirklich alle Möglichkeiten durchlaufen werden (ich wüsste aber nicht, wieso nicht).
|
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Ich denke bzgl. der Events wäre auch die DFM mal ganz nützlich um zu sehen, ob allen Labels tatsächlich das richtige Event zugeordnet wurde.
|
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
wie kann ich euch das denn zeigen? es sind ja alle genau da wo sie sein sollen den fehler hab ich gestern auch schon entdeckt...
aber wieso das "neue" Label nicht fuktioniert weiß ich auch immer noch nicht -.- |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Wenn du im Formular-Editor bist drück mal Alt+F12, den Code brauchen wir/ich.
(Mit Alt+F12 kommst du wieder zurück in die normale Ansicht) |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Oder rechte Maustaste aufs Fomular -> Ansicht als Text/Ansicht als Formular ;)
|
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Zitat:
Mach das so:
Delphi-Quellcode:
//...
TMyArr = array[1..9] of string; TForm1 = class(TForm) //... function CheckForWin(AIndex:TMyArr): Boolean; //... GBuffer: TMyArr; //... function TForm1.CheckForWin(AIndex: TMyArr): Boolean; |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Delphi-Quellcode:
object Form1: TForm1
Left = 0 Top = 0 Caption = 'TicTacToe' ClientHeight = 455 ClientWidth = 582 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 object Label1: TLabel Left = 8 Top = 8 Width = 137 Height = 129 Alignment = taCenter AutoSize = False Color = clWhite Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -107 Font.Name = 'Tahoma' Font.Style = [] ParentColor = False ParentFont = False OnClick = Label1Click end object Label2: TLabel Left = 151 Top = 8 Width = 137 Height = 129 Alignment = taCenter AutoSize = False Color = clWhite Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -107 Font.Name = 'Tahoma' Font.Style = [] ParentColor = False ParentFont = False OnClick = Label2Click end object Label3: TLabel Left = 294 Top = 8 Width = 137 Height = 129 Alignment = taCenter AutoSize = False Color = clWhite Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -107 Font.Name = 'Tahoma' Font.Style = [] ParentColor = False ParentFont = False OnClick = Label3Click end object Label4: TLabel Left = 8 Top = 143 Width = 137 Height = 129 Alignment = taCenter AutoSize = False Color = clWhite Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -107 Font.Name = 'Tahoma' Font.Style = [] ParentColor = False ParentFont = False OnClick = Label4Click end object Label5: TLabel Left = 151 Top = 143 Width = 137 Height = 129 Alignment = taCenter AutoSize = False Color = clWhite Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -107 Font.Name = 'Tahoma' Font.Style = [] ParentColor = False ParentFont = False OnClick = Label5Click end object Label6: TLabel Left = 294 Top = 143 Width = 137 Height = 129 Alignment = taCenter AutoSize = False Color = clWhite Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -107 Font.Name = 'Tahoma' Font.Style = [] ParentColor = False ParentFont = False OnClick = Label6Click end object Label8: TLabel Left = 151 Top = 278 Width = 137 Height = 129 Alignment = taCenter AutoSize = False Color = clWhite Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -107 Font.Name = 'Tahoma' Font.Style = [] ParentColor = False ParentFont = False OnClick = Label8Click end object Label9: TLabel Left = 294 Top = 278 Width = 137 Height = 129 Alignment = taCenter AutoSize = False Color = clWhite Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -107 Font.Name = 'Tahoma' Font.Style = [] ParentColor = False ParentFont = False OnClick = Label9Click end object Label10: TLabel Left = 437 Top = 8 Width = 221 Height = 33 AutoSize = False end object Label7: TLabel Left = 8 Top = 278 Width = 137 Height = 129 Alignment = taCenter AutoSize = False Color = clBtnHighlight Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -107 Font.Name = 'Tahoma' Font.Style = [] ParentColor = False ParentFont = False OnClick = Label7Click end object CloseButton: TButton Left = 437 Top = 342 Width = 137 Height = 65 Caption = 'Schlie'#223'en' TabOrder = 0 OnClick = CloseButtonClick end object NewGameButton: TButton Left = 437 Top = 271 Width = 137 Height = 65 Caption = 'Neues Spiel' TabOrder = 1 OnClick = NewGameButtonClick end end ach du liebe Zeit... was ist denn das?!:shock: |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Hallo,
Das ist der Code der hinter deinem Formular steckt :mrgreen: Aber scheinbar liegts daran nicht. Du solltest den Hinweis von mleyen besser weiterverfolgen. |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Tja, wenn man typisiert, kann einem so etwas nicht so schnell passieren.
Delphi-Quellcode:
[edit]:oops: Das hatte mleyen ja bereits geschrieben [/edit]
type
TBuffer = array[1..9] of string; var GBuffer: TBuffer; function CheckForWin(Buffer: TBuffer): Boolean; |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Zitat:
|
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Delphi-Quellcode:
Das kann so bleiben, ja?
procedure TForm1.MakeArray;
begin GBuffer[1] := Label1.Caption; GBuffer[2] := Label2.Caption; GBuffer[3] := Label3.Caption; GBuffer[4] := Label4.Caption; GBuffer[5] := Label5.Caption; GBuffer[6] := Label6.Caption; GBuffer[7] := Label7.Caption; GBuffer[8] := Label8.Caption; GBuffer[9] := Label9.Caption; end; Ich starte mal... |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
:dancer2:
Es Fukntioniert!!!!!!! Jetzt noch mal was ganz kleines dass seit ihr mich los^^ wenn ich das dritte Feld Klicke um zu gewinnen, dann sagt er schon gewonnen obwohl da noch kein x oder O drin steht...!? |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Hallo,
Dann schreib mal in den OnClicks:
Delphi-Quellcode:
if IsFieldEmpty(Label2.Caption) then
begin Label2.Caption := WriteToField(GPlayer); Label2.Repaint; // oder: Application.ProcessMessages MakeArray; // Weiterer Code |
AW: tic tac toe.... mal wieder:) versteh aufgabestellung nicht ganz
Wofür steht das Repaint?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:57 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