Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Farbkonvertierung scheint fehlerhaft!? (https://www.delphipraxis.net/33443-farbkonvertierung-scheint-fehlerhaft.html)

torud 7. Nov 2004 08:12


Farbkonvertierung scheint fehlerhaft!?
 
Hallo Leute!

Ich habe das Problem, dass mir eine Farbkonvertierung teilweise "falschen" oder unvollständigen Code zurückgibt.


Delphi-Quellcode:
function ConvertToDelphiColor(Html : string) : TColor;
begin
 while Pos('#', Html) <> 0 do
   Delete(Html, Pos('#', Html), 1);
 Html := (Copy(Html,5,2) + Copy(Html,3,2) + Copy(Html,1,2));
 Result := StrToInt('$' + Html);
end;
Komischerweise schreibt mir dir Funktion manchmal folgendes in mein Edit zurück!

#ff0|

statt

#ff0066

Woran kann das liegen??

Ich rufe folgende auf:
Delphi-Quellcode:
if ColorDialog1.Execute then ed_css_hg_col_link.Text:=LowerCase(ConvertToHtmlColor(ColorDialog1.Color));
Der Fehler tritt aber auch auf, so glaube ich, wenn ich LowerCase weg lasse! Ich weiss einfach nicht, was da falsch lkäuft, denn dieser Fehler tritt nicht immer auf, aber doch häufig! Wer kann helfen?

mirage228 7. Nov 2004 08:14

Re: Farbkonvertierung scheint fehlerhaft!?
 
Hi,

versuche es mal mit dieser Funktion:

Delphi-Quellcode:
function HTML2Color(const HTML: String): Integer;
var
  Offset: Integer;
begin
  if HTML[1] = '#' then
    Offset := 1
  else
    Offset := 0;
  Result :=
    Integer(StrToInt('$' + Copy(HTML, Offset + 1, 2))) +
    Integer(StrToInt('$' + Copy(HTML, Offset + 3, 2))) shl 8 +
    Integer(StrToInt('$' + Copy(HTML, Offset + 5, 2))) shl 16;
end;
Edit: Und noch die Umkehrfunktion:
Delphi-Quellcode:
function Color2HTML(Color: TColor): String;

  function Swap(Color: TColor): TColor;
  begin
    Result :=
      Color and $FF0000 shr 16 + 
      Color and $00FF00 + 
      Color and $0000FF shl 16;
  end;

begin
  try
    Result := '#' +
      IntToHex(Byte(Color), 2) +
      IntToHex(Byte(Color shr 8), 2) +
      IntToHex(Byte(Color shr 16), 2);
  except
    Result := '#000000';
  end;
end;
mfG
mirage228

torud 7. Nov 2004 08:30

Re: Farbkonvertierung scheint fehlerhaft!?
 
ok, ich versuchs, aber ist denn die andere function etwa fehlerhaft!?

Christian Seehase 7. Nov 2004 13:24

Re: Farbkonvertierung scheint fehlerhaft!?
 
Moin Tom,

überprüfe doch einfach mal, was Du wirklich im Parameter HTML übergibst.
Für micht sieht es so aus, als wäre der übergebene String manchmal einfach zu kurz.

torud 7. Nov 2004 13:51

Re: Farbkonvertierung scheint fehlerhaft!?
 
hm, ich hatte doch glatt die falsche funktion gepostet (und keiner hats gemerkt)

Delphi-Quellcode:
function ConvertToHtmlColor(Col : TColor): PChar;
var
s : PChar;
begin
 s := PChar(IntToHex(ColorToRgb(col),6));
 s := PChar(Copy(s,5,2) + Copy(s,3,2) + Copy(s,1,2));
 Result := PChar(Format('#%s', [s]));
end;
denn diese gibt ja den eigentlichen "string" zurück, aber vielleicht ist ja das das problem, dass kein string, sondern ein pchar ist!??


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