Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Farbe umwandeln funktioniert nicht (https://www.delphipraxis.net/58450-farbe-umwandeln-funktioniert-nicht.html)

alexo 7. Dez 2005 09:45


Farbe umwandeln funktioniert nicht
 
hi nochmal!

ich weiß ich bin nervig aber ihr seit meine einzige hoffnung... :roll:


Folgendes:

hab mir die funktion

Delphi-Quellcode:
function TForm2.ColorToStr(AFarbe: Variant): String;
begin
 case AFarbe of
  clRed:Result := 'Rot';
....
gebastelt.


ich möchte nun einen Db-Datensatz in eine LV eintragen:

Delphi-Quellcode:
...
FarbCodeText := Dm1.AdoQuery1.FieldByName('FarbCodeName').AsVariant;
...
Item.SubItems.Add(ColorToStr(FarbCodeText));
...
Wert wird richtig geladen aber bei der umwandlung kommt der fehler:


Variante des Typs(String) konnte nicht in Typ(Boolean) konvertiert werden


wie kommt er auf BOOLEAN !?!?!? :wall:

info:
meine tabelle enthält ca. 40 farben

|kategorieNr|kategorieName|farbcode|farbName|
|----------1|----Sonstiges|-------0|-clBlack|

farbcode wird automatisch generiert (höchste zahl +1)
kategorieNr = autowert
farbname = farbe aus TColorBox
Name= string ;-)

....

Klaus01 7. Dez 2005 10:18

Re: Farbe umwandeln funktioniert nicht
 
Hallo,

wie schaut es denn aus wenn Du anstatt

FarbCodeText := Dm1.AdoQuery1.FieldByName('FarbCodeName').AsVarian t;

FarbCodeText := Dm1.AdoQuery1.FieldByName('FarbCodeName').AsString ;

nimmst. Vorausgesetzt FarbCodeText ist ein String.

Grüße
Klaus

alexo 7. Dez 2005 10:23

Re: Farbe umwandeln funktioniert nicht
 
passiert das selbe....



ich wollte schon die funktion umändern auf

Delphi-Quellcode:
function ColorToStr(AFarbe:String):String;
begin
 case AFarbe of
  'clRed':Result := 'Rot';
....
  end;
end;
aber da meldet der compiler ordinaltyp erforderlich?!?

Klaus01 7. Dez 2005 10:30

Re: Farbe umwandeln funktioniert nicht
 
function ColorToStr(AFarbe:String):String;
begin
case AFarbe of
'clRed':Result := 'Rot';
....
end;
end;

AFarbe ist kein Ordinaltyp also ein einfachh abzählbarer Typ sein muß.

Was hat denn FarbCodeText für eine Typdeclartion?

Grüße
Klaus

alexo 7. Dez 2005 10:44

Re: Farbe umwandeln funktioniert nicht
 
zuerst war er variant dann hab ich es mit string getestet,

beides funktioniert nicht....


deine aussage zu der funktion hab ich nicht ganz verstanden :?

Klaus01 7. Dez 2005 10:46

Re: Farbe umwandeln funktioniert nicht
 
FarbCodeText := Dm1.AdoQuery1.FieldByName('FarbCodeName').AsString ;

In diesem Konstrukt, was für ein Typ ist FarbCodeText?

alexo 7. Dez 2005 10:48

Re: Farbe umwandeln funktioniert nicht
 
...string...

leddl 7. Dez 2005 10:49

Re: Farbe umwandeln funktioniert nicht
 
Schau dir mal den Eintrag in der OnlineHilfe zu Delphi-Referenz durchsuchenCase an. Du benötigst einen ordinalen (abzählbaren) Typ, wie zB Integer, Char,... Sprich, jeder annehmbare Wert hat genau einen Vorgänger und einen Nachfolger. Das wäre zB bei Booleans, Integers, Chars, ... der Fall, aber eben leider nicht bei Strings oder Floats.

alexo 7. Dez 2005 10:50

Re: Farbe umwandeln funktioniert nicht
 
ok. danke...deswegen funktioniert die geänderte function nicht...

aber mein problem, siehe ganz oben ist aber damit nicht gelöst :wall:

marabu 7. Dez 2005 11:15

Re: Farbe umwandeln funktioniert nicht
 
Hallo Alex,

du speicherst in deiner Tabelle FarbCode und FarbName redundant. Als FarbName würde ich 'Schwarz' und nicht 'clBlack' speichern, da clBlack schon durch FarbCode festgelegt ist:

Delphi-Quellcode:
uses
  Graphics; // ColorToString()
var
  sFarbe, sColor: string;
  c: TColor;
begin
  c := TColor(Dm1.AdoQuery1.FieldByName('FarbCode').AsInteger);
  sFarbe := Dm1.AdoQuery1.FieldByName('FarbName').AsString;
  sColor := ColorToString(c);
end;
Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:53 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