Avatar billede azs Nybegynder
26. april 2001 - 22:29 Der er 19 kommentarer og
1 løsning

TColor til Sring

Hvordan kan man få gemt en TColor i en ini fil eller lave den om til en string så den kan gemmes i en (ini fil).

Avatar billede abpdk Nybegynder
26. april 2001 - 22:51 #1
Du kan bruge funktionerne getRvalue, getGvalue og getBvalue til at dele en TColor i de tre RGB værdier. De kan så lagres. Når du skal bruge dem igen bruger du bare TColor:=RGB(rød,grøn,blå);

MVH abpdk
Avatar billede microtec Nybegynder
26. april 2001 - 22:54 #2
Du kan bruge:

ColorToString(Color: TColor): string
Avatar billede microtec Nybegynder
26. april 2001 - 22:55 #3
Og StringToColor(S: string): TColor når du læser fra INI-filen igen
Avatar billede abpdk Nybegynder
26. april 2001 - 23:18 #4
Jeg tror faktisk microtec\'s forslag er bedre til brug i en ini-fil.
Avatar billede borrisholt Novice
27. april 2001 - 06:50 #5
azs>> Der er ingen grund til at konvetere det til en String. En farve er en integer, og kan blive behandlet som sådan. Normalt er det kun de første 24 bits der bliber brugt 8 bit til hver af de tre farver.


Hvis du vil gemme en farve i en ini fil så behandler du den blit som var der en integer. Når du så skal læse den op i gen er der ingen problemer i at assigne en integer til en TColor (i sagens natur);

Hvis du stadig ønsker at dissekerer dine farver så brug dem her :

Function RGB(r, g ,b : byte) : TColor;
asm
  and eax, $ff
  and edx, $ff
  shl edx, $08
  or eax, edx
  xor edx,edx
  mov dl,cl
  shl edx,$10
  or eax,edx
end;

Function GetRed(Color : TColor) : Byte;
asm
  lea eax, [eax]
end;

Function GetGreen(Color : TColor) : Byte;
asm
  shr eax, $8
end;

Function GetBlue(Color : TColor) : Byte;
asm
  shr eax, $10
end;


Jens B
Avatar billede delphidaner Nybegynder
27. april 2001 - 07:31 #6
borrisholt >> Der er en, der kan sin Assembler, hva\'?
Avatar billede borrisholt Novice
27. april 2001 - 07:33 #7
delphidaner  >> Det er ikke verdens største kunst at dele en integer op i fire bytes ..
Avatar billede delphidaner Nybegynder
27. april 2001 - 08:01 #8
borrisholt >> Nej, men jeg skulle da lige sidde og tænke lidt over koden, da jeg har glemt det meste Assembler jeg har lært. Sådan noget kan jeg ikke lige ryste ud af ærmet. :)
Avatar billede microtec Nybegynder
27. april 2001 - 08:37 #9
borrisholt >> Det kommer lidt an på versionen af Delphi, om du kan kalde en TColor for INTEGER.

Oprindelig var en INTEGER en 16-bit størrelse. For at beskrive en farve skal du bruge 24-bil (1 byte for hver grundfarve).
Avatar billede borrisholt Novice
27. april 2001 - 08:39 #10
microtec  >> ja ja ja ... Det er rigtigt, men hvem bruger Delphi 1? Oprindeligt var en INTEGER altså 8 bit !

Jens B
Avatar billede microtec Nybegynder
27. april 2001 - 08:42 #11
borrisholt >> Det gælder også Delphi 2+3. Der arbejder INTEGER også med 16-bit meds mindre man beder om at de skal behandles som LONGINT, som jo er 32-bit.
Du kan altså ikke beskrive TColor (24-bit) med hverken INTEGER (16-bit) eller LONGINT (32-bit).
Avatar billede microtec Nybegynder
27. april 2001 - 08:43 #12
borrisholt >> Du skal vist meget langt tilbage før en INTEGER var 8-bit *gg*
I alle de gamle versioner af Turbo Pascal jeg har arbejdet med har det være 16-bit ;o)
Avatar billede borrisholt Novice
27. april 2001 - 08:44 #13
tja .... igen hvem brugem dem i dag ?
Avatar billede microtec Nybegynder
27. april 2001 - 08:46 #14
Det gør jeg f.eks.
Alle dem, der benytter \"gratis-versioner\" af Delphi. Og alle dem, der ikke mener der er nogen grund til at betale for opdateringer hver gang der kommer nye versioner, hvis de ikke indeholder nye funktioner man har behov for.

Avatar billede borrisholt Novice
27. april 2001 - 08:48 #15
Delphi 4 er også \"gratis\". Dov vil jeg ikke anbefale dig at opgradere til den. Vent til du kan få en 5\'er.

Nå lad os da ikke mund hukkes om det .....

Jens B
Avatar billede azs Nybegynder
27. april 2001 - 08:48 #16
jeg tror jeg bruger microtec svar for det ser ud til at være lettere end borrisholt svar ;)

jeg er ikke lige inde i Assembler så meget =)
Avatar billede borrisholt Novice
27. april 2001 - 08:49 #17
saz læs lige den første del af mit svar igen og spring alt det ASM sjov over : Der står Hvis du bruger Delphi 4 eller nyere så behandl din TColor som en integer.

Jens B
Avatar billede azs Nybegynder
27. april 2001 - 08:54 #18
jaa okay det tængte jeg ikke lige på =)

Men jeg vil nu bruge ColorToString() aligevel da det er lige det jeg skal bruge!

Avatar billede microtec Nybegynder
27. april 2001 - 08:57 #19
borrisholt >> Det var ikke for at \"mundhukkes\" :o)

Jeg syntes bare at et par af jer hardcore \"kode-karle\" ofte glemmer at det ikke er alle, som sidder med den absolut nyeste version af Delphi.
Jeg har et lille firma, så jeg skal bruge en \"køber-version\" af Delphi. Jeg ser bare ingen grund til at opdaterer 1-2 gange om året, når der ikke er nye funktioner jeg skal bruge :o)
Avatar billede borrisholt Novice
27. april 2001 - 08:59 #20
Ok .. Men Delphi 4 står til at skaffe. Den kome sammen med et blad sidste år ....

Jens B
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester