Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi String & Cardinal (https://www.delphipraxis.net/160208-string-cardinal.html)

Muellermilchtrinker 2. Mai 2011 18:20

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.

ConnorMcLeod 2. Mai 2011 18:26

AW: String & Cardinal
 
Was spricht gegen
Delphi-Quellcode:
  color := StrToInt('$FFFFFFFF');
?

Muellermilchtrinker 2. Mai 2011 18:27

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.

alfold 2. Mai 2011 18:31

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

ConnorMcLeod 2. Mai 2011 18:36

AW: String & Cardinal
 
Zitat:

Zitat von Muellermilchtrinker (Beitrag 1098408)
Die Funktion nimmt dies nicht an

Welche Funktion ist das? Bei mir geht's problemlos (D2010).

Muellermilchtrinker 2. Mai 2011 18:40

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

EWeiss 2. Mai 2011 18:40

AW: String & Cardinal
 
Zitat:

Zitat von Muellermilchtrinker (Beitrag 1098408)
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.

Denke es liegt am Alpha Channel ;)
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:

StringToColor
logisch da hier ein RGB und nicht ein ARGB verarbeitet wird.
Das gleiche bei color du kannst nur RGB werte nicht ARGB übergeben.

gruss

alfold 2. Mai 2011 18:41

AW: String & Cardinal
 
Zitat:

Zitat von Muellermilchtrinker (Beitrag 1098417)
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

dann must Du prüfen ob der string leer ist!

gruss alfold

Muellermilchtrinker 2. Mai 2011 18:44

AW: String & Cardinal
 
Zitat:

Zitat von alfold (Beitrag 1098420)
Zitat:

Zitat von Muellermilchtrinker (Beitrag 1098417)
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

dann must Du prüfen ob der string leer ist!

gruss alfold

dieser ist ja auch nicht leer ;) ich weiß, dass da was drin steht :stupid:

EDIT: Ach und RGB nimmt die Funktion auch nicht. Die Farbe muss ARGB sein ;)

BUG 2. Mai 2011 18:46

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 12:30 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