Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mo Mai 20, 2024 21:31

Foren-Übersicht » Sonstiges » Meinungen zu den Projekten
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 36 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: Xenorate 3
BeitragVerfasst: Mo Jul 05, 2004 13:48 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Meinungen, Verbesserungsvorschläge, Kritik hier posten !

Danke,
Finalspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 05, 2004 15:06 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Wollte nur mal kurz anmerken das ich beim schliessen dieser Testversion die du gepostet hast ne schöne Windowsmeldung "Xenorate.exe - Fehler in Anwendung..." bekomme, und zwar mehrmals.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 05, 2004 15:16 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Da gehts dann schon los mit Rechner abhängigkeiten :(
Also hier im geschäft tuts einwandfrei beim beenden.

Da du aber gesagt hast das der fehler mehrmals kommt, kann gut sein das der Update Thread noch läuft.
Und somit der fehler ab und zu mal kommt beim beenden, werde das überprüfen...

Du hast keine idee wie ich so art Debug Protokoll machen kann welches mir wirklich ursache von Fehlern anzeigt ?
Damit hatte ich schon in xeno 2 probs :(

Danke für die info !


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 05, 2004 15:19 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Habs jetzt mehrmals getestet, und der Fehler kam eigentlich immer. Ist jedesmal ein Lesefehler in einem bestimmten Speicherbereich. (Evtl. hilft das ja)

Zum Thema Fehlerlog : Da würde ich konsequent mit try...except...finally-Blöcken arbeiten, die dann zur Laufzeit genutzt werden sollten um bei Fehlern genaue Infos auszugeben. Auch Exceptions können dabei sehr behilflich sein.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 05, 2004 15:40 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jun 24, 2003 19:09
Beiträge: 732
Hab mir die Demo noch nicht angeschaut,
aber bezüglich TBitmap32 und PNG bilder.
Jemand ausm SharpE Team hatte mir für SharpDesk ne funktion geschrieben die PNG Dateien mit Alpha Channel in TBitmap32 konvertiert. Wenn du willst kann ich die hier posten =)
(ich kann mir zumindest sonst nicht denken woran es liegt das du noch keinen png support drin hast)

Generell als Tipp für die Arbeit mit Graphics32 :
wenn du Probleme hast dann schau einfach in die Mailingliste von graphics32.
Da kannst du verdammt nützliche sachen finden :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 05, 2004 21:54 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Danke für den Tip billi-san, werd mich in der mailing list mal anmelden.

PNG support Alpha Channel, stimmt daran hab ich gar nich gedacht *g* :)
Wäre aber interessiert für ne Funktion für PNG Loading mit Bmp32.

@SoS: Ok, betreffend speicher guck ich mal, muss es halt an mehreren rechner testen damit ich das nachvollziehen kann.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 05, 2004 22:45 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jun 24, 2003 19:09
Beiträge: 732
Hab gerade mal bei den GFX Funktionen von SharpDesk etwas rum geschaut,
ich denke mal ne Blend funtion wäre auch nicht unpraktisch?
Naja, hier ein paar nützliche funktionen für deine Skin Engine...

Code:
  1.  
  2. procedure BlendImage(bmp : Tbitmap32; color : Tcolor; alpha:integer);
  3. var
  4.    P           : PColor32;
  5.    I           : integer;
  6.    sum1,sum2   : real;
  7.    CB,CR,CG    : Integer;
  8.    oCB,oCR,oCG : Integer;
  9.    nCB,nCR,nCG : Integer;
  10.    tempAlpha   : integer;
  11.    change      : Integer;
  12. begin
  13.   alpha := min(alpha,255);
  14.   alpha := max(alpha,0);
  15.   CR := GetRValue(colortorgb(color));
  16.   CG := GetGValue(colortorgb(color));
  17.   CB := GetBValue(colortorgb(color));
  18.   sum1 := (CB+CR+CG)/3;
  19.   with bmp do begin
  20.     try
  21.       P := PixelPtr[0, 0];
  22.       for I := 0 to Width * Height - 1 do
  23.       begin
  24.         tempAlpha := (P^ shr 24);
  25.         if tempAlpha <> 0 then begin
  26.           oCR    := (P^ and $00FF0000)shr 16;
  27.           oCG    := (P^ and $0000FF00)shr 8;
  28.           oCB    :=  P^ and $0000FF;
  29.           sum2   := (oCB+oCR+oCG)/3;
  30.           change := round(sum2-sum1);
  31.           nCR    := CR + change;
  32.           nCG    := CG + change;
  33.           nCB    := CB + change;
  34.           nCR    := round((alpha/255)*nCR+((255-alpha)/255)*oCR);
  35.           nCG    := round((alpha/255)*nCG+((255-alpha)/255)*oCG);
  36.           nCB    := round((alpha/255)*nCB+((255-alpha)/255)*oCB);
  37.           if nCB > 255 then nCB := 255
  38.           else if nCB < 0 then nCB := 0;
  39.           if nCR > 255 then nCR := 255
  40.           else if nCR < 0 then nCR := 0;
  41.           if nCG > 255 then nCG := 255
  42.           else if nCG < 0 then nCG := 0;
  43.           P^ := color32(nCR,nCG,nCB,tempAlpha);
  44.         end;
  45.         Inc(P); // proceed to the next pixel
  46.       end;
  47.     finally
  48.     end;
  49.   end;
  50. end;


Hier die Funktion zum PNG laden :


Code:
  1. function LoadPng(Bmp : TBitmap32; IconFile:string) : boolean;
  2. var
  3.    ADIB : TBitmap32;
  4.    i, j: integer;
  5.    P: PColor32;
  6.    A: PByte;
  7.    ABmp: TBitmap;
  8.    APng: TPngObject;
  9.    Canvas: TCanvas;
  10. begin
  11.      result := False;
  12.      APng := TPngObject.Create;
  13.      ABmp := TBitmap.Create;
  14.      ADib := TBitmap32.Create;
  15.      try
  16.         // Load and assign to the a bitmap
  17.         APng.LoadFromfile(IconFile);
  18.         APng.AssignTo(ABmp);
  19.  
  20.         // We now *draw* the bitmap to our bitmap.. this will clear alpha in places
  21.         // where drawn.. so we can use it later
  22.         ADib.SetSize(APng.Width, APng.Height);
  23.         ADib.Clear(clBlack32);
  24.         Canvas := TCanvas.Create;
  25.         try
  26.            Canvas.Handle := ADib.Handle;
  27.            Canvas.Draw(0,0,ABmp);
  28.         finally
  29.                Canvas.Free;
  30.         end;
  31.  
  32.      // Flip the alpha channel
  33.      P := @ADib.Bits[0];
  34.      for i := 0 to ADib.Width * ADib.Height - 1 do
  35.      begin
  36.           P^ := P^ XOR $FF000000;
  37.           inc(P);
  38.      end;
  39.  
  40.      // The previous doesn't handle bitwise alpha info, so we do that here
  41.      for i := 0 to APng.Height - 1 do
  42.      begin
  43.           A := PByte(APng.AlphaScanLine[i]);
  44.           if assigned(A) then
  45.           begin
  46.                P := @ADib.Bits[i * ADib.Width];
  47.                for j := 0 to APng.Width - 1 do
  48.                begin
  49.                     P^ := SetAlpha(P^, A^);
  50.                     inc(P); inc(A);
  51.                end;
  52.           end else break;
  53.      end;
  54.  
  55.      finally
  56.             result := True;
  57.  
  58.             APng.Free;
  59.             ABmp.Free;
  60.             Bmp := ADib;
  61.             Bmp.DrawMode := dmBlend;
  62.      end;
  63. end;


Vielleicht auch noch recht praktisch die funktion um XP icons mit Schatten in ein TBitmap32 umzuwandeln...


Code:
  1. procedure IconToImage(Bmp : TBitmap32; const icon : hicon);
  2. var
  3.    w,h,i    : Integer;
  4.    p        : PColorArray;
  5.    p2       : pColor32;
  6.    bmi      : BITMAPINFO;
  7.    AlphaBmp : Tbitmap32;
  8.    tempbmp  : Tbitmap;
  9.    info     : Ticoninfo;
  10.    dc       : hdc;
  11.    alphaUsed : boolean;
  12. begin
  13.      Alphabmp := nil;
  14.      tempbmp := Tbitmap.Create;
  15.      dc := createcompatibledc(0);
  16.      try
  17.         //get info about icon
  18.         GetIconInfo(icon,info);
  19.         tempbmp.handle := info.hbmColor;
  20.         ///////////////////////////////////////////////////////
  21.         // Here comes a ugly step were it tries to paint it as
  22.         // a 32 bit icon and check if it is successful.
  23.         // If failed it will paint it as an icon with fewer colors.
  24.         // No way of deciding bitcount in the beginning has been
  25.         // found reliable , try if you want too.   /Malx
  26.         ///////////////////////////////////////////////////////
  27.         AlphaUsed := false;
  28.         if true then
  29.         begin //32-bit icon with alpha
  30.               w := tempbmp.Width;
  31.               h := tempbmp.Height;
  32.               Bmp.setsize(w,h);
  33.               with bmi.bmiHeader do
  34.               begin
  35.                    biSize := SizeOf(bmi.bmiHeader);
  36.                    biWidth := w;
  37.                    biHeight := -h;
  38.                    biPlanes := 1;
  39.                    biBitCount := 32;
  40.                    biCompression := BI_RGB;
  41.                    biSizeImage := 0;
  42.                    biXPelsPerMeter := 1; //dont care
  43.                    biYPelsPerMeter := 1; //dont care
  44.                    biClrUsed := 0;
  45.                    biClrImportant := 0;
  46.               end;
  47.               GetMem(p,w*h*SizeOf(TColorRec));
  48.               GetDIBits(tempbmp.Canvas.Handle,tempbmp.Handle,0,h,p,bmi,DIB_RGB_COLORS);
  49.               P2 := Bmp.PixelPtr[0, 0];
  50.               for i := 0 to w*h-1 do
  51.               begin
  52.                    if (p[i].a > 0) then alphaused := true;
  53.                    P2^ := color32(p[i].r,p[i].g,p[i].b,p[i].a);
  54.                    Inc(P2);// proceed to the next pixel
  55.               end;
  56.               FreeMem(p);
  57.         end;
  58.         if not(alphaused) then
  59.         begin // 24,16,8,4,2 bit icons
  60.               Bmp.Assign(tempbmp);
  61.               AlphaBmp := Tbitmap32.Create;
  62.               tempbmp.handle := info.hbmMask;
  63.               AlphaBmp.Assign(tempbmp);
  64.               Invert(AlphaBmp,AlphaBmp);
  65.               Intensitytoalpha(Bmp,AlphaBmp);
  66.         end;
  67.      finally
  68.             DeleteDC(dc);
  69.             AlphaBmp.free;
  70.             tempbmp.free;
  71.      end;
  72. end;


so, jetzt ist aber Schluß...
ich hoffe das hilft dir irgendwie,
hat ne ganze Weile gebraucht eh ich das richtig zum laufen bekommen haben(ohne Hilfe hätte ich es gar nicht geschafft ;) )
Aber gut zu wissen das noch jemand Graphics32 benutzt =)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 06, 2004 14:03 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Thx, die Blend Funktion ist echt praktisch :)

Das PNG läuft bei mir nicht... TPngObject kennt mein delphi nicht.
Hmm, ich sollte mir langsam auch mal gedanken machen wegen optimierung.
Zur zeit mach ichs so das ich alle Skin Bitmaps in TBitmaps packe.
Diese dann beim Rendern von einem Control per Layer.Bitmap.Clear; und Layer.Bitmap.Assign(SkinBitmap);
nur so als beispiel, bei Progressbars z.b. da muss ich das ganze so machen, das ich per CopyRect den Balken rauskopiere.
Bei Trackbars sinds 2 Layer, einmal background und bar.

Ich selbst rendere Controls nur welche auch wirklich geändert werden müssen.
Bei Mauserreignisse render ich alle.

so sieht z.b. ne routine aus um TXButton zu zeichnen:

Code:
  1.  
  2.   FLayer.Bitmap.DrawMode := dmBlend;
  3.   FLayer.Location := FloatRect(FX,FY,FX + FW,FY + FH);
  4.   FLayer.Bitmap.SetSize(FW,FH);
  5.  
  6.   if FEnabled then
  7.   begin
  8.     if (not FDown) then
  9.     begin
  10.       if FHover then
  11.         FLayer.Bitmap.Assign(FBitmaps[3])
  12.       else
  13.         FLayer.Bitmap.Assign(FBitmaps[2]);
  14.     end
  15.     else
  16.     begin
  17.       if (FHover) then
  18.         FLayer.Bitmap.Assign(FBitmaps[4])
  19.       else
  20.         FLayer.Bitmap.Assign(FBitmaps[2]);
  21.     end;
  22.   end
  23.   else
  24.     FLayer.Bitmap.Assign(FBitmaps[1]);
  25.  
  26.   AddBitmap32Alpha(FLayer.Bitmap, FBitmaps[0]);
  27.  


Code:
  1.  
  2. procedure TfrmMain.img32LayersMouseDown(Sender: TObject;
  3.   Button: TMouseButton; Shift: TShiftState; X, Y: Integer;
  4.   Layer: TCustomLayer);
  5. begin
  6.   // Maus erreignisse abfangen
  7.   MouseEventLayers(X, Y, Shift, True);
  8.   // Layers rendern
  9.   RenderLayers;
  10.  
  11.   // Form bewegen wenn kein control aktiv ist
  12.   if (NoControlHitTest(X, Y)) then
  13.     XMoveControlFromMouseDown(Self, X, Y, 5);
  14. end;
  15.  
  16. procedure TfrmMain.img32LayersMouseMove(Sender: TObject;
  17.   Shift: TShiftState; X, Y: Integer; Layer: TCustomLayer);
  18. begin
  19.   // Maus erreignisse abfangen
  20.   MouseEventLayers(X, Y, Shift, False);
  21.   // Hover erreignisse anfangen
  22.   HoverLayers(X, Y);
  23.   // Layers Rendern
  24.   RenderLayers;
  25. end;
  26.  
  27. procedure TfrmMain.img32LayersMouseUp(Sender: TObject;
  28.   Button: TMouseButton; Shift: TShiftState; X, Y: Integer;
  29.   Layer: TCustomLayer);
  30. begin
  31.   // Maus erreignisse abfangen
  32.   MouseEventLayers(X, Y, Shift, False);
  33.   // Layers rendern
  34.   RenderLayers;
  35. end;
  36.  


Hättest da ne idee wie man sowas eleganter lösen kann, bzw resourcenschonender ?
Grade das Renderlayers wird sehr oft aufgerufen, wenn die maus bewegt wird, liegt daran weil ich alle Mauserreignisse selbst abfang.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 06, 2004 16:37 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jun 24, 2003 19:09
Beiträge: 732
hm,
also jetzt lädst du alle bilder des Skins in eine Liste mit vielen TBitmaps,
und dann weist du je nach state die einzelnen Bitmaps den Layern zu?
So würde ich es denke ich auch machen,
stelle halt nur ganz sicher das du das BeginUpdate und EndUpdate nicht vergißt.
Und vielleicht noch irgendwelche Abfragen das er wirklich nur neu zeichnett wenn sich etwas ändert. Also nicht beim Maus bewegen sondern nur wenn die Maus den Layer verläßt/betritt so das sich auch das benötigte Bitmap ändert. Bei SharpDesk habe ich das z.B. komplett über MouseEnter und MouseLeave gelöst.
Aber warum lädst du die bilder des skins nicht gleich in eine Liste mit TBitmap32?

TPngObject gibts hier : http://pngdelphi.sourceforge.net/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jul 07, 2004 09:28 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Also das mit dem BeginUpdate, EndUpdate funzt irgendwie nicht so wie es soll :(
Muss das ganze viel mehr optimieren und vor allem will ich auf speicher verbrauch acht geben, weil
ist dir schon aufgefallen das wenn du xenorate startest 5-6 mb an speichern weggeht.
und sobald dus minimierst nur noch 1,6 :p

Ich änder aber vieles, ich hab jetzt Dyn-Pascal mit hilfe von Lars compiled bekommen und es rennt ;)
Werd also das Skinsystem darauf aufbauen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jul 07, 2004 15:49 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jun 24, 2003 19:09
Beiträge: 732
du rufst einfach bevor du was an den Layern änderst TImage32.Begin Update auf,
Am Ende machst du TImage32.EndUpdate und alles wird dann neu gezeichnett...
(bin mir jetzt nicht sicher wie es genau war, kann auch TImage32.Bitmap.Beginupdate oder TImage32.Layers.BeginUpdate sein)

Mit der Speicherauslastung,
auf die stolzen 12 MB die Winamp5 braucht wirst du so schnell nicht kommen ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 08, 2004 07:50 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
12 MB haben die den arsch offen oda was :p
soviel verbraucht ja nichmal die alte Xenorate Version, naja die lag ja teilweise sogar unter 2.9 winamp version ;)
Xenorate rockt halt ;) Am Lap kann ich nur xeno benutzen, selbst VLC versagt da da es kein gescheiten Helligkeit Support mitbringt.

K, werde das mit dem BeginUpdate und EndUpdate machen.
Muss das ganze system eh neu machen, da ich fehler gemacht habe... naja eignetlich kein fehler, aber umständlich für mich.
Ich hab mir Klassen gemacht für jede Komponente, TXButton, TXLabel, TXScrollLabel, TXProgressbars usw.

Und hab dann einfach die routine für MouseEventLayers immer den source von einem kopiert und halt fürs nächste angepasst.
Das ist verdammt viel aufwand und echt schwachsinnig, ich hätte von anfang an nen TXControl machen soll, welches ein Layer hat, die Standard Eigenschaften wie XPos, YPos, Width, Height, Down, Hover und Enabled.
Naja... ich will das system eh in ne DLL auslagern, zumindest die routinen die WinAPI abhängig sind.
Damit ich später support für WinNT und 9x gewährleisten kann, weil WinAPI routinen laufen nich auf 98, SetLayerWindowAttributes z.b. und wirkt auf jedemfall dann übersichtlicher.

Frage, betreffend Desktop Shells: Ich hab mitterweile echt viele ausprobiert, Deinen, Talisman, Litestep, Blackbox usw.
Aber keiner hat Unicode support, was wirklich wichtig ist für mich da 40% meiner files zu hause sind in japananisch geschrieben mit schriftzeichen :) Und Delphi macht standardmässig aus Unicode immer ???? draus, welche der explorer natürlich später nicht finden kann :(

Aber nun zu meiner frage, ich hab angefangen mit eigenes system (nur für mich) zu machen wo ich so gestalten kann wie ich lust habe und vor allem auf geschwindigkeit achten kann, da ich es ja für mich anpasse und nicht irgendwie ur complex proggen muss. Aber mir ist schon aufgefallen das wenn ich ne app mache, diese auf meine auflösung anpasse, Left 0 und top 0 setzte, dann bleiben sämtliche apps immer im hintergrund, öffne ich den editor ist er davor, klick ich wieder aufen desk, dann isser weg :(, Sollte aber ja nich sein... sollte ja nur Deaktiviert sein das fenster von Notepad und nicht hinter den desk rutschen.

Gibts da nen WinAPI befehle, welche man die Z-Order von den Fenstern erzwingen kann ?

*Edit: OK, hat sich erledigt, hab im code von sharpdesk nachgeguckt und habs gefunden: SWP_NOZORDER in WindowPosChanging.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 08, 2004 16:17 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jun 24, 2003 19:09
Beiträge: 732
Hui, hätte nicht gedacht das der Code wirklich mal für irgendjemanden nützlich sein könnte ;)
(ich sollte ihn aber mal wieder updaten...)

Ich hatte die alte Xenorate Version vor ner Weile schon mal ausprobiert,
aber irgendwas hat mich daran immer wieder gestört. Hat mich irgendwie nie richtig begeistert,
und seit winamp5 gibts für mich nicht wirklich nen anderen musik player. Aber ich weiß gar nicht mehr was mich an der letzten Xenorate Version so gestört hatte. Ich werds bei gelegenheit nochmal ausprobieren...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 22, 2004 18:03 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jun 24, 2003 19:09
Beiträge: 732
Als ergänzung zu der IconToImage funktion :
im finally Block muß folgender Code hinzugefügt werden :
Code:
  1.             DeleteObject(info.hbmMask);
  2.             DeleteObject(info.hbmColor);

so das es dann wie folgt aussieht :
Code:
  1.      finally
  2.             DeleteDC(dc);
  3.             AlphaBmp.free;
  4.             tempbmp.free;
  5.             DeleteObject(info.hbmMask);  // WICHTIG
  6.             DeleteObject(info.hbmColor); //  WICHTIG
  7.      end;

Ohne den neuen Code erzeugt die funktion ein weniger lustiges leak von 2 GDI Handlen pro Aufruf...
Problem ist das TIconinfo zwei HBitmaps erzeugt ...
(fragt nicht wie lange ich gesucht habe um das zu finden - ich hasse solche bugs :( )


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 31, 2005 17:24 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 19, 2004 00:27
Beiträge: 454
Wohnort: Nürnberg
Wie machst du eigentlich des mit dem einfärben von den Bildern?


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 36 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Foren-Übersicht » Sonstiges » Meinungen zu den Projekten


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 14 Queries | GZIP : On ]