Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Farbwerte aus Textdatei einlesen (https://www.delphipraxis.net/3457-farbwerte-aus-textdatei-einlesen.html)

Hellcat 13. Mär 2003 20:03


Farbwerte aus Textdatei einlesen
 
Hi Leute,

Ich habe folgendes Problem: Ich speichere zunächst einen Farbwert (Hexadezimal) in einer Textdatei
Delphi-Quellcode:
writeln (save, TimeToStr(Now)+ '#' + HName + '#' + IntToStr(HFarbe) + '#' + BoolToStr(Schloss) + '#');
doch wenn ich den Wert wieder auslese und versuche einem Objekt diese Farbe zuzuweisen wird das Objekt schwarz...
Delphi-Quellcode:
repeat
    begin
      Fabezaehler := Fabezaehler + Zeile[Zaehler];
      inc (Zaehler);
    end;
  until Zeile[Zaehler] = '#';
  HalFarbe := StrToInt(Fabezaehler);
  inc (Zaehler);
Delphi-Quellcode:
Panel1.Color := HalFarbe;
Beim Speichern wird das "$" abgeschnitten, daher vermute ich mal stark daß es daran liegt, aber wie integriere ich das wieder in meinen Farbwert?

eddy 14. Mär 2003 09:47

Hallo Hellcat,

probier's mal damit:

Code:
function IntToHexCol(w : integer) : string;
const
  hex : array[0..15] of char = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
var
  i,
  t : integer;
  s : string;
begin
  s := '';
  for i := 1 to 8 do begin
    t := w and $0F;
    s := hex[t] + s;
    w := w shr 4;
  end;
  Result := '$' + s;
end;

mfg
eddy

Christian Seehase 14. Mär 2003 18:53

Moin Hellcat,

so wie Du den Farbwert speicherst, speicherst Du ihn nicht hexadezimal, sondern dezimal.
Um HFarbe in eine hexadezimale Darstellung umzuwandeln, müsstest Du IntToHex verwenden.
Zum Auslesen, könntest Du dann mit

Delphi-Quellcode:
HalFarbe := StrToInt('$'+Fabezaehler);
den Wert wieder in einen Zahlenwert umwandeln.

Deine Variante müsste allerdings genauso gut funktionieren, denn das Zahlensystem sollte unerheblich sein.

Schau doch mal nach, was Fabezaehler am Ende der Schleife enthält (z.B. mit ShowMessage, oder durch Breakpoint)

Hellcat 16. Mär 2003 19:18

Ok, jetzt geht's! Vielen Dank!


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