Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String Entscheidungen mit case treffen!!! (https://www.delphipraxis.net/66843-string-entscheidungen-mit-case-treffen.html)

DevilsCamp 6. Apr 2006 10:33

Re: String Entscheidungen mit case treffen!!!
 
Zitat:

Zitat von Hansa
Das zitierte Zitat :mrgreen: paßt aber nicht so recht. Wie der richtig schreibt, sollte man das Tag eben nicht für eigene Zwecke (hier allerdings Komponente) mißbrauchen. Verwendet man es im nur Programm, dann steht es eben später und zwar auch in abgeleiteten Typen nicht mehr so zur Verfügung.

Da verweise ich aber mal auf die OH. Da steht zu Tag eindeutig dabei, dass die Property zur FREIEN Verfügung für den Entwickler steht.

D.h. WAS ich damit mache ist also egal. Und gerade für sowas könnte man das Tag doch benutzen, oder?
Es sollte aber vielleicht in einem leicht sichtbaren Kommentar drauf hingewiesen werden, wozu der Tag benutzt wird. Dann sollte keiner mehr im dunklen stehen, wofür die Tags nun benutzt werden.

Sharky 6. Apr 2006 11:34

Re: String Entscheidungen mit case treffen!!!
 
Zitat:

Zitat von Hansa
Stimmt ! Aber das ist hoffnungslos. ...

Hai Hansa,

glaubst Du denn wirklich DU bist der einige der eine eigene Klasse ableiten kann :roll:
Ich habe da eher das gefühl das Du "denkst" für jede kleinigkeit eine eigene Klasse/Komponente erstellen zu müssen um dann jedem Sagen zu können das Du das super gut kannst.

Gerade in diesem Fall wurde doch der beste Weg gezeigt. -> Nämlich für jedes der Label ein eigenes OnClick zu verwenden. Und wenn man es doch nicht möchte dann ist die Verwendung des TAG-Poroperty der richtige Weg. Ob Du es nun einsiehst oder nicht.

Hansa 6. Apr 2006 12:47

Re: String Entscheidungen mit case treffen!!!
 
Sharky, hier ist eine kleine Diskussion mit mehreren Vorschlägen gelaufen. Unter anderem von mir ein Beispiel, wie man das auch innerhalb einer Komponente machen KANN. Wobei ich auch gleich dazu gesagt habe, daß für DIESEN anfangs erwähnten Zweck, das wohl nicht zwingend nötig ist. Man es aber auch nicht ausschließen soll, eine Komponente mal selber für eigene Zwecke zu machen. Denn die Tendenz geht IMHO (zumindest hier) eher in die Richtung, möglichst irgendwie um die Komponenten drumrumzukommen und diese Fähigkeit von Delphi nicht nutzen zu MÜSSEN. Siehe hier :
Zitat:

Zitat von Sharky
...da eher das gefühl das Du "denkst" für jede kleinigkeit eine eigene Klasse/Komponente erstellen zu müssen...

Da dies noch dazu von Moderatorenseite kam, wird das auch eher helfen diese Tendenz zu verstärken als umgekehrt. Ich finde es jedenfalls bedauerlich, daß durch nachträgliches reininterpretieren mittels Vermutungen in einen so gut wie beendeten Thread, zumindest bei Neulingen wohl der Eindruck entsteht, es sei schon besser, den Bogen den sie sowieso um die Komponenten machen, größer anstatt kleiner zu machen. Raus kommt im Endeffekt dann das : "Wer kennt eine Komponente, die....".

alzaimar 6. Apr 2006 12:59

Re: String Entscheidungen mit case treffen!!!
 
Hi Sharky, hi Hansa. Ich finde wirklich, es gehört in einen eigenen Thread. Es hat nun mal viel mit 'Programmierphilosophie' zu tun, ob und wie ich Komponenten einsetze. Wieso muss ich die dann eigentlich installieren? Kann im Projekt nicht (optional) vermerkt werden, welche zusätzlichen Komponenten das Projekt verwendet und die dann beim Laden des Projektes temporär installiert werden? Usw.

Aber "Sharky und Hansa" ist eine never ending Story, wat misch ick mia da überhaupt ein. :zwinker:

merlin17 6. Apr 2006 13:21

Re: String Entscheidungen mit case treffen!!!
 
evtl. so etwas (um wieder zum Thema zurück zu kommen...);
ist sicherlich noch ausbaufähig bzw. optimierbar <g>


Delphi-Quellcode:
 case StringToCaseSelect(Section.ChildNodes['TYP'].Text,
        ['INTEGER', 'BETRAG', 'STRING']) of
        0: CDS1.FieldDefs.Add(Section.ChildNodes['NAME'].Text,
            ftInteger, 0, false);
        1: CDS1.FieldDefs.Add(Section.ChildNodes['NAME'].Text,
            ftFloat, 0, false);
        2: CDS1.FieldDefs.Add(Section.ChildNodes['NAME'].Text,
            ftString, 50, false);
      end;



function TForm1.StringToCaseSelect
  (Selector: string;
  CaseList: array of string): Integer;
var
  cnt: integer;
begin
  Result := -1;
  for cnt := 0 to Length(CaseList) - 1 do
  begin
    if CompareText(Selector, CaseList[cnt]) = 0 then
    begin
      Result := cnt;
      Break;
    end;
  end;
end;

:-) thomas

Hawkeye219 6. Apr 2006 13:33

Re: String Entscheidungen mit case treffen!!!
 
@merlin17
Schaue Dir mal Beitrag #9 in diesem Thread an...

Gruß Hawkeye

merlin17 6. Apr 2006 13:49

Re: String Entscheidungen mit case treffen!!!
 
thx,
man sollte doch wieder öfters in diese mächtigen Utils schauen :oops:


:-) thomas

Phoenix 6. Apr 2006 16:41

Re: String Entscheidungen mit case treffen!!!
 
Hrm...
noch ne andere Version die mir gerade einfällt, die aber nicht wirklich zu den saubersten gehört:

1.) Es werden integer-Konstanten für die verschiedenen möglichen Strings definiert.
2.) Eine Funktion gibt diese Konstanten für den String zurück.
3.) Im Case wird nach der Konstante unterschieden.

Code:
const
   TEXT1 = 1;
   TEXT2 = 2;
   TEXT3 = 3;

...

function getIndex(string text): integer;
begin
   if text = 'Text1' then result := TEXT1;
   if text = 'Text2' then result := TEXT2;
   ...
end;

...

   case getIndex(theText) of
      TEXT1: begin
                ...
             end;
      TEXT2: begin
                ...
             end;
      ...
   end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:22 Uhr.
Seite 4 von 4   « Erste     234   

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