AGB  ·  Datenschutz  ·  Impressum  







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

Quellcode reduzieren

Ein Thema von Mystery · begonnen am 26. Nov 2011 · letzter Beitrag vom 27. Nov 2011
Antwort Antwort
Seite 1 von 2  1 2      
Mystery

Registriert seit: 26. Nov 2011
20 Beiträge
 
#1

Quellcode reduzieren

  Alt 26. Nov 2011, 23:36
Hey, bin noch relativ neu in Delphi. Mein letztes Programm war Blackjack und momentan arbeite ich an einem Schachspiel. Schon bei Blackjack ist mir aufgefallen, dass ich immer wieder den selben Code geschrieben habe, nur halt für immer andere Karten. Bisher ist mein ''Wortschatz'' beim programmieren noch ziemlich begrenzt, aber ich wollte fragen, ob es eine Möglichkeit gibt, meinen Quellcode abzukürzen.

Ein Beispiel:
Ich hatte 52 Karten. Die Karten 1-25 sollen alle sichtbar werden, oder wieder unsichtbar. Könnte man das irgendwie zusammenfassen, ohne 25x karte1.visible:=true; karte2.visible:=true; karte3.vis ..
da ich allein so schon 50 zeilen nur für sichtbar oder unsichtbar geschrieben hätte.

So jetzt habe ich wieder viel für ein kleines Problem geschrieben^^ wäre nett wenn ihr Lösungen für mein Problem hättet !
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#2

AW: Quellcode reduzieren

  Alt 26. Nov 2011, 23:39
Das Stichwort, das du suchst heißt array
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#3

AW: Quellcode reduzieren

  Alt 27. Nov 2011, 00:43
Vielleicht auch TList - und wenn du ein etwas neueres Delphi hast geht sogar eine typisierte TList in der Art TList<TSpielkarte>.
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
borstenei

Registriert seit: 12. Nov 2011
121 Beiträge
 
#4

AW: Quellcode reduzieren

  Alt 27. Nov 2011, 12:11
Oder benutzt ComponentCount
Delphi-Quellcode:
  for y:= 0 to ComponentCount -1 do //reine Weltidee
  if (Components[y] is TABLed) then
  begin
   inc(i);
   x2 := xm + round(frund * 0.5* sin(i*15* pi / 180));
   y2 := ym - round(frund * 0.5* cos(i*15* pi / 180));
   TABLed(Components[y]).Left := x2;
   TABLed(Components[y]).Top := y2;
  end;
reduziert auch unheimlich Schreibarbeit
  Mit Zitat antworten Zitat
Mystery

Registriert seit: 26. Nov 2011
20 Beiträge
 
#5

AW: Quellcode reduzieren

  Alt 27. Nov 2011, 14:39
So..

hab das jetzt mal versucht das in meinem Fall anzuwenden, leider ohne erfolg.

habe eine variable x:integer;

x:=random(52)+1;

und jetzt kommen meine ganzen 52 Fälle..

if x=1 then begin image1.visible:=true; image1.top:=200; image1.left:=300; end;
if x=2 then begin image2.visible:=true; image2.top:=200; image2.left:=300; end;
if x=3 then begin image3.visible:=true; image3.top:=200; image3.left:=300; end;

//bei dem Programm werden sie nicht nur sichtbar und verschoben, ist nur ein Beispiel...

gibt es eine Möglichkeit, die images mit x irgendwie anzusprechen

Zum Beispiel sowas wie:

image(x).visible:=true oder sowas?!
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#6

AW: Quellcode reduzieren

  Alt 27. Nov 2011, 14:45
Q'n'D-Lösung:
Delphi-Quellcode:
var
  bild: TImage;
  x: integer;
begin
x:=random(52)+1;
bild := FindComponent('image' + inttostr(x));
bild.visible:=true;
bild.top:=200;
bild.left:=300;
end;
Saubere Lösung: Bei Programmstart alle Bilder in ein Array packen und dann darüber ansprechen. Idealerweise kannst du die TImage-Komponenten auch zur Laufzeit erzeugen, aber ich weiß nicht ob du das schon kannst...
  Mit Zitat antworten Zitat
Mystery

Registriert seit: 26. Nov 2011
20 Beiträge
 
#7

AW: Quellcode reduzieren

  Alt 27. Nov 2011, 14:52
Danke danke danke ! Das hört sich sher gut an (-:

ich probier es gleich mal aus !

Danke !
  Mit Zitat antworten Zitat
Mystery

Registriert seit: 26. Nov 2011
20 Beiträge
 
#8

AW: Quellcode reduzieren

  Alt 27. Nov 2011, 16:52
Mhmm..

Es kommt eine Fehlermeldung:

Inkompatible Typen: 'TImage' und 'TComponent'..

Wo liegt der Fehler?
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#9

AW: Quellcode reduzieren

  Alt 27. Nov 2011, 17:32
bild := TImage(FindComponent('image' + inttostr(x)));
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#10

AW: Quellcode reduzieren

  Alt 27. Nov 2011, 17:39
Das alles trägt zur Problemlösung bei, aber lehrt dir nicht, wie du das ganze wirklich löst.
Stichwörter: Prozeduren/Funktionen.
Wenn du dir ne Prozedur schreibst, die als Parameter eine Image Komponente nimmt und die dann halt verändert, musst du nur noch mehr diese aufrufen und nicht nen ganze Block an Code ausführen:

Delphi-Quellcode:
if x=1 then begin image1.visible:=true; image1.top:=200; image1.left:=300; end;
if x=2 then begin image2.visible:=true; image2.top:=200; image2.left:=300; end;
if x=3 then begin image3.visible:=true; image3.top:=200; image3.left:=300; end;
-->

Delphi-Quellcode:
procedure SetImageProps(Image: TImage; AVisible: Boolean; ATop, ALeft: Integer);
begin
  with Image do
  begin
    Visible := AVisible;
    Top := ATop;
    Left := ALeft;
  end;
end;

// Aufruf (ohne Wissen über Findcomponent)
case x of
  1: SetImageProps(image1, True, 200, 300);
  2: SetImageProps(image2, True, 200, 300);
  3: SetImageProps(image3, True, 200, 300);
end;

// Aufruf (eleganter; Findcomponent)
  SetImageProps(TImage(FindComponent('Image' + IntToStr(x))), True, 200, 300);

// ... oder die Images in nem Array aufbewahren und X als Index verwenden
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton (27. Nov 2011 um 18:01 Uhr)
  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 11:48 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