Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Wer hilft mir ein Stück Code zu komprimieren? (https://www.delphipraxis.net/145575-wer-hilft-mir-ein-stueck-code-zu-komprimieren.html)

AlexII 4. Jan 2010 17:27


Wer hilft mir ein Stück Code zu komprimieren?
 
Hab hier diesen Code und bin mir sicher diesen kann man etwas komprimieren, spricht vereinfachen, wer zeig mir wie? Danke im Voraus!

Delphi-Quellcode:
if Background='Blue' then
begin
Image3.Picture:=Image23.Picture;
Blue1.Checked:=True;
Vista1.Checked:=False;
Red1.Checked:=False;
Black1.Checked:=False;
Win71.Checked:=False;
Light1.Checked:=False;
Blue1.Enabled:=False;
Vista1.Enabled:=True;
Red1.Enabled:=True;
Black1.Enabled:=True;
Win71.Enabled:=True;
Light1.Enabled:=True;
Background:='Blue';
end;

if Background='Vista' then
begin
Image3.Picture:=Image22.Picture;
Blue1.Checked:=False;
Vista1.Checked:=True;
Red1.Checked:=False;
Black1.Checked:=False;
Win71.Checked:=False;
Light1.Checked:=False;
Blue1.Enabled:=True;
Vista1.Enabled:=False;
Red1.Enabled:=True;
Black1.Enabled:=True;
Win71.Enabled:=True;
Light1.Enabled:=True;
end;

if Background='Red' then
begin
Image3.Picture:=Image24.Picture;
Blue1.Checked:=False;
Vista1.Checked:=False;
Red1.Checked:=True;
Black1.Checked:=False;
Win71.Checked:=False;
Light1.Checked:=False;
Blue1.Enabled:=True;
Vista1.Enabled:=True;
Red1.Enabled:=False;
Black1.Enabled:=True;
Win71.Enabled:=True;
Light1.Enabled:=True;
end;

if Background='Black' then
begin
Image3.Picture:=Image25.Picture;
Blue1.Checked:=False;
Vista1.Checked:=False;
Red1.Checked:=False;
Black1.Checked:=True;
Win71.Checked:=False;
Light1.Checked:=False;
Blue1.Enabled:=True;
Vista1.Enabled:=True;
Red1.Enabled:=True;
Black1.Enabled:=False;
Win71.Enabled:=True;
Light1.Enabled:=True;
end;

if Background='Win7' then
begin
Image3.Picture:=Image26.Picture;
Blue1.Checked:=False;
Vista1.Checked:=False;
Red1.Checked:=False;
Black1.Checked:=False;
Win71.Checked:=True;
Light1.Checked:=False;
Blue1.Enabled:=True;
Vista1.Enabled:=True;
Red1.Enabled:=True;
Black1.Enabled:=True;
Win71.Enabled:=False;
Light1.Enabled:=True;
end;

if Background='Light' then
begin
Image3.Picture:=Image27.Picture;
Blue1.Checked:=False;
Vista1.Checked:=False;
Red1.Checked:=False;
Black1.Checked:=False;
Win71.Checked:=False;
Light1.Checked:=True;
Blue1.Enabled:=True;
Vista1.Enabled:=True;
Red1.Enabled:=True;
Black1.Enabled:=True;
Win71.Enabled:=True;
Light1.Enabled:=False;
end;

Der.Kaktus 4. Jan 2010 17:34

Re: Wer hilft mir ein Stück Code zu komprimieren?
 
Hallo,
kleiner Tip(meine Idee)...

mit einem "Case" als erstes die Farbe.."vorher" Grunddefinition der Felder setzen...diese Imagefiles evtl. in einen Array und dann ueber "+1" erreichen .. nur die Felder Changen die sich wirklich aendern....damit sparst Du ein paar Byte ...muss das in der "heutigen" Zeit des Speichers aber wirklich noch sein? :shock:

Die Muhkuh 4. Jan 2010 17:35

Re: Wer hilft mir ein Stück Code zu komprimieren?
 
Ich glaube es geht nicht um die Dateigröße, sondern wie er die ganzen Checkboxen da geschickt mappt.

nahpets 4. Jan 2010 17:36

Re: Wer hilft mir ein Stück Code zu komprimieren?
 
Hallo,

Du könntest zuerst alle .Checked und .Enabled auf False setzen, und dann in den einzelnen Abfragen nur noch die benötigten auf True, dadurch könntest Du eventuell ein paar Zeilen sparen.
Die einzelnen If-Abfragen können per Else miteinander verbunden werden, da ja nur eine If-Abfrage zutreffen kann.
Delphi-Quellcode:
  Blue1.Checked:=False;
  Vista1.Checked:=False;
  Red1.Checked:=False;
  Black1.Checked:=False;
  Win71.Checked:=False;
  Light1.Checked:=False;
  Blue1.Enabled:=False;
  Vista1.Enabled:=False;
  Red1.Enabled:=False;
  Black1.Enabled:=False;
  Win71.Enabled:=False;
  Light1.Enabled:=False;

if Background='Blue' then
begin
  Image3.Picture:=Image23.Picture;
  Blue1.Checked:=True;
  Vista1.Enabled:=True;
  Red1.Enabled:=True;
  Black1.Enabled:=True;
  Win71.Enabled:=True;
  Light1.Enabled:=True;
end else if Background='Vista' then
...
Aber viel Ersparnis bringt das nicht.

Bernhard Geyer 4. Jan 2010 17:36

Re: Wer hilft mir ein Stück Code zu komprimieren?
 
Evtl mit einem Record und einem Array davon
Delphi-Quellcode:
type
  TMyRec = record
    Image3: string;
    Blue1: Boolean;
    Vistal: Boolean;
    ...
  end;

const
  MyValues: array[0..4] of TMyRec = (
    (Image3 = 'Image24'; Blue1 = False; ....)
    ...
  );
und dann abhängig von Background-Wert den passenden Index nehmen.

himitsu 4. Jan 2010 17:38

Re: Wer hilft mir ein Stück Code zu komprimieren?
 
fällt dir was auf?
Delphi-Quellcode:
Blue1.Checked  := Background = 'Blue';
Vista1.Checked := Background = 'Vista';
...

nun nur noch die Bilder ... z.B. über Bernhards Array für die Images, zusammen mit FindComponent

Der.Kaktus 4. Jan 2010 17:40

Re: Wer hilft mir ein Stück Code zu komprimieren?
 
Zitat:

Zitat von himitsu
fällt dir was auf?

Delphi-Quellcode:
Blue1.Checked  := Background = 'Blue';
Vista1.Checked := Background = 'Vista';
...
nun nur noch die Bilder

6 Bytes..maechtige Code->Ersparnis ;-) *fg* (assembler)

himitsu 4. Jan 2010 17:49

Re: Wer hilft mir ein Stück Code zu komprimieren?
 
Zitat:

Zitat von Der.Kaktus
6 Bytes..maechtige Code->Ersparnis ;-) *fg* (assembler)

ich dachte er will QuellCode sparen :roll:

- Array/Liste mit den Namen
- aktuellen Namen in Liste suche = Index
- Array mit Imagenamen und über den Index den passenden Imagenamen finden
- FindComponent + Imagenamen das Bild zuweisen
- CheckBoxen setzen
Delphi-Quellcode:
Blue1.Checked  := Index = 0;
Vista1.Checked := Index = 1;
...
PS: warum immer alle Bilder in Images ständig geladen haben?
ich würde jeweils nur das benötigte Bild direkt ins Image laden (Resourcen)

Der.Kaktus 4. Jan 2010 17:51

Re: Wer hilft mir ein Stück Code zu komprimieren?
 
Zitat:

Zitat von himitsu
Zitat:

Zitat von Der.Kaktus
6 Bytes..maechtige Code->Ersparnis ;-) *fg* (assembler)

ich dachte er will QuellCode sparen :roll:
...

Öhhhm, stand das da? :gruebel:

AlexII 4. Jan 2010 17:57

Re: Wer hilft mir ein Stück Code zu komprimieren?
 
Ja genau ich will den Code sparren!


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:54 Uhr.
Seite 1 von 2  1 2      

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