Avatar billede dilling-hansen Nybegynder
12. februar 2009 - 22:51 Der er 7 kommentarer og
1 løsning

cm til fod (feet) og tommer (inches)

Jeg har lavet det her program, og ville gerne have lavet så den kan omskrive til feet og inches?
Er der nogen der har en function der kan omskrive mellem cm og feet inches?

Håber der er nogen der kan hjælpe :)
Og hvis der er nogen der har andre idéer til programmet, er i velkommen til at skrive, så ser jeg hvad jeg kan gøre :P

Link til programmet:
http://www.drakkashi.com/files/calculator.zip

Link til programmet med nogen sample data:
http://www.drakkashi.com/files/calculator_sample.zip

http://i235.photobucket.com/albums/ee282/dillinghansen/random/WebAd.png
Avatar billede arne_v Ekspert
12. februar 2009 - 23:06 #1
cm := feet * 30.48 + inches * 2.54;

og

feet := trunc(cm/30.48);
inches := (cm - feet*30.48) / 2.54;

skulle goere det.
Avatar billede arne_v Ekspert
12. februar 2009 - 23:07 #2
Hvis du vil have inches med 1/2 1/4 1/8 1/16 etc. saa er det lidt mere tricky.
Avatar billede dilling-hansen Nybegynder
12. februar 2009 - 23:15 #3
Ved ikke rigtigt så meget om hvordan man plejer at måle højde/længde i feet inches :\ det var bare en request til programmet ;)
men mange tak, får nok først kigget på det i løbet af næste uge :/
Avatar billede arne_v Ekspert
13. februar 2009 - 02:03 #4
Jeg har lige testet og følgende ser ud til at virke:

procedure us2metric(feet, inches : double; var cm : double);

begin
  cm := feet * 30.48 + inches * 2.54;
end;

procedure metric2us(cm : double; var feet, inches : double);

begin
  feet := trunc(cm/30.48);
  inches := (cm - feet*30.48) / 2.54;
end;
Avatar billede arne_v Ekspert
13. februar 2009 - 02:14 #5
Og hvis du vil have det med brøker (ned til 256'ende dele) så:

procedure us2metric(feet, inches, inches1, inches2 : integer; var cm : double);

begin
  cm := feet * 30.48 + (inches + inches1 / inches2) * 2.54;
end;

procedure metric2us(cm : double; var feet, inches, inches1, inches2 : integer);

var
  tmp : double;

begin
  feet := trunc(cm/30.48);
  tmp := (cm - feet*30.48) / 2.54;
  inches := trunc(tmp);
  tmp := tmp - inches;
  inches1 := trunc(256 * tmp);
  inches2 := 256;
  while (inches2 > 1) and (inches1 mod 2 = 0) and (inches2 mod 2 = 0) do begin
    inches1 := inches1 div 2;
    inches2 := inches2 div 2;
  end;
end;
Avatar billede dilling-hansen Nybegynder
15. februar 2009 - 22:06 #6
mange tak for hjælpen, et helvede at få det til at køre sammen med det andet xD men nu virker det :D
så smid et svar, så skal du få dine point :)
Avatar billede arne_v Ekspert
15. februar 2009 - 22:12 #7
svar
Avatar billede borrisholt Novice
24. februar 2009 - 08:36 #8
Man kunne vælge at bruge det konveterings frame work der følger med delphi :

Hvis du  bruger Delphi 2007 ligger demoen her :
C:\Documents and Settings\All Users\Dokumenter\RAD Studio\5.0\Demos\Delphi.Net\VCL\ConvertIt

Og for Delphi finder du demoen her :
C:\Programmer\Borland\Delphi7\Demos\ConvertIt

Men helt generelt skal du bruge unit'en ConvUtils.pas, som ligger her :{$Delphi}\source\Win32\rtl\common

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