![]() |
String & Cardinal
Hallo DP,
ich hab mal wieder ein kleines Problemchen. ;) Alsoich hab eine Funktion, die möchte die Schriftfarbe in einer 8stelliger Hex. Soweit so gut. Wenn ich diese fest definiere mit $FFFFFFFF dann passt alles. Jetzt hab ich aber folgendes: Meine Schriftfarbe steht genau in dem Format: $FFFFFFFF in einer Stringvariable. Wie kann ich diese nun übergeben? Wenn ich einfach die Variable hinschreibe, dann kommt eine Meldung Inkompatible Typen String und Cardinal. Schonmal danke für eure Hilfe. |
AW: String & Cardinal
Was spricht gegen
Delphi-Quellcode:
?
color := StrToInt('$FFFFFFFF');
|
AW: String & Cardinal
Hab ich schon probiert: Die Funktion nimmt dies nicht an, auch wenn ich mir die Zahl ausgeben lasse und diese dann fest rein schreibe. Es funktioniert nicht.
|
AW: String & Cardinal
Gibst du den wert ein(Tedit) oder ist der Wert fix?
Fix, dann nimm eine Variable von TColor. Im Edit gibt es glaube ich StringToColor Gruss alfold |
AW: String & Cardinal
Zitat:
|
AW: String & Cardinal
Keine offizielle von Delphi. Ist eine aus einer DLL
StringToColor ging auch nicht. Da bekomm ich immer zu Laufzeit den Error "" ist kein gültiger Integerwert |
AW: String & Cardinal
Zitat:
Versuchs mal mit '$FFFFFF' Hatte das gleiche problem übergehst du den Alpha Cannel dann wird die Farbe nicht gesetzt. Wenn der Alpha Channel nicht den Wert 255 hat! Aber achtung in Win7 und Vista ist dieser angegebene Wert Schwartz also Transparent Das kannst nur umgehen in dem du den wert um eins verringerst also 254 für Alpha. Zitat:
Das gleiche bei color du kannst nur RGB werte nicht ARGB übergeben. gruss |
AW: String & Cardinal
Zitat:
gruss alfold |
AW: String & Cardinal
Zitat:
EDIT: Ach und RGB nimmt die Funktion auch nicht. Die Farbe muss ARGB sein ;) |
AW: String & Cardinal
Wie wäre es mit sowas in der Art?
Delphi-Quellcode:
function HexToCardinal(x: String): cardinal;
var i: integer; begin result := 0; if (length(x)*4 > SizeOf(cardinal)*8) then; // ERROR; for i := 1 to length(x) do begin case x[i] of '0'..'9': result := (result shl 4) or (ord(x[i])- ord('0')); 'a'..'f': result := (result shl 4) or (ord(x[i])- ord('a') + 10); 'A'..'F': result := (result shl 4) or (ord(x[i])- ord('A') + 10); else; //ERROR; end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz