PDA

Просмотр полной версии : JavaScript >> Delphi


t04
31.05.2007, 19:03
Доброго впемени суток ;)
Я пишу программу и столкнулся с проблемой,
нашел исходники на java а разобраться в нём что то не смог.
Помогите Plz перевести из java в Delphi.
Вот собсна исходник на java который нужно переписать под Delphi:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from http://astroclub.biz -->
<HTML><HEAD><TITLE>Текущее среднее звёздное время</TITLE>

<BODY onselectstart="return false" bgColor=#000066 onload=starClock()>
<script language=JavaScript>
<!--
function starClock()
{

var sidTimer = new Date();

var year = sidTimer.getYear();
var month = sidTimer.getMonth()+1;
var date = sidTimer.getDate();
var hour = sidTimer.getHours();
var minute = sidTimer.getMinutes();
var second = sidTimer.getSeconds();
var zone = -sidTimer.getTimezoneOffset()/60;/*автополучение временной зоны с учётом летнего времени*/

var uhour = hour - zone;

var long = 35.167; /*долгота в градусах места, для которого вычисляется текущее среднее звёздное время*/

var lt = hour + minute/60 + second/3600;


if (year<1900) year=year+1900
if (month<=2) {month=month+12; year=year-1}

var A = Math.floor(year/100);
var B = 2 - A + Math.floor(A/4);

var jdn = Math.floor(365.25*(year+4716)) + Math.floor(30.6001*(month+1)) + date +B - 1524.5 - zone/24;
var jd = jdn + (hour + minute/60 + second/3600)/24;

var T = (jdn - 2451545.0)/36525;

var sidtn = 280.46061837 + 360.98564736629*(jdn - 2451545.0) + 0.000387933*T*T - T*T*T/38710000;
sidtn = (sidtn)%360;
if (sidtn < 0) {sidtn = sidtn +360;}
sidtn = sidtn/15;


var st = sidtn + lt*1.00273790935 + long/15;
st = (st + 24)%24;

var sth = Math.floor(st);
var stm = (st - sth)*60;
var stmo = Math.floor(stm);
var sts = (stm-stmo)*60;
sts = Math.floor(sts);

if (sth < 10) {sth = "0" + sth;}
if (stmo < 10) {stmo = "0" + stmo;}
if (sts < 10) {sts = "0" + sts;}

var stt = sth + "h" +stmo + "m" +sts +"s";
document.sidtimer.startm.value = stt;

if (hour < 10) {hour = "0" + hour;}
if (minute < 10) {minute = "0" + minute;}
if (second < 10) {second = "0" + second;}

var sysdate = hour + ":" + minute + ":" + second;
document.sidtimer.stime.value = sysdate;

if (hour < 3) {uhour = uhour + 24;}
if (uhour > 23) {uhour = uhour - 24;}
if (uhour < 10) {uhour = "0" + uhour;}

var ut = uhour + ":" + minute + ":" + second;
document.sidtimer.utime.value = ut;

var jd1 = Math.floor(jd);
var jd2 = (jd - jd1)*100000;
jd2 = Math.floor(jd2);

document.sidtimer.yuldate.value = jd1 + "." + jd2;


window.setTimeout("starClock()", 1000)
}

// -->
</SCRIPT>

<LINK rel="STYLESHEET" href="css/styles.css">

<FORM name=sidtimer>
<TABLE border=0>
<CAPTION>
<span class=h2>Текущее местное и среднее звёздное время для Запорожья (ш: 47°&nbsp;48' д: 35h 10m)</span></CAPTION>
<TBODY>
<TR>
<TD>
<INPUT size=14 name=stime>
</TD>
<TD><span class=h1>Локальное время (LT)</span></TD>
</TR>
<TR>
<TD>
<INPUT size=14 name=utime>
</TD>
<TD><span class=h2>Всемирное время (UT)</span></TD>
</TR>
<TR>
<TD>
<INPUT size=14 name=yuldate>
</TD>
<TD><span class=h3>Юлианская дата (JD)</span></TD>
</TR>
<TR>
<TD>
<INPUT size=14 name=startm>
</TD>
<TD><span class=h6>Среднее звездное время (ST)</span></TD>
</TR>
</TBODY>
</TABLE>
</FORM></BODY></HTML>

<STYLE type="text/css">
<!--


FORM {
font-family: "Verdana", "Verdana", "Tahoma", "Arial", "Helvetica";
font-size: 7pt;
font-weight : normal;
color: #080000;
text-decoration: none;
background-color: #000066;
background: #000066;
}

BODY {
font-weight : normal;
color: #00FFFF;
text-decoration: none;
background-color: #000066;
background: #000066;
}


span.H1 {
font-family: "Verdana", "Verdana", "Tahoma", "Arial", "Helvetica";
font-size: 14pt;
font-weight : normal;
color: #FFFFCC;
text-decoration: none;
}

span.H2 {
font-family: "Verdana", "Verdana", "Tahoma", "Arial", "Helvetica";
font-size: 12pt;
font-weight : normal;
color: #FFCC00;
text-decoration: none;
}

span.H3 {
font-family: "MS Sans Serif", "Verdana", "Tahoma", "Arial", "Helvetica";
font-size: 12pt;
font-weight : bold;
color: #FFCC00;
text-decoration: none;
}

span.H4 {
font-family: "MS Sans Serif", "Verdana", "Tahoma", "Arial", "Helvetica";
font-size: 12pt;
font-weight : normal;
color: #FFFFCC;
text-decoration: none;
}

span.H5 {
font-family: "MS Sans Serif", "Verdana", "Tahoma", "Arial", "Helvetica";
font-size: 12pt;
font-weight : normal;
color: #CCFFCC;
text-decoration: none;
}

span.H6 {
font-family: "MS Sans Serif", "Verdana", "Tahoma", "Arial", "Helvetica";
font-size: 10pt;
font-weight : normal;
color: #00FF66;
text-decoration: none;
}

INPUT {
font-family: "Verdana", "Verdana", "Tahoma", "Arial", "Helvetica";
font-size: 10pt;
font-weight : normal;
color: #FFFFFF;
text-decoration: none;
background-color: #000066;
background: #000066;
}

-->
</STYLE>

Joker-jar
31.05.2007, 19:16
Смысл переводить? Хочешь добиться такого функционала в Делфи, юзай таймер и функции Date, Time, DateToStr из SysUtils.

NetMan
31.05.2007, 19:17
Проще будет на C++ перевести, т.к. синтаксис похожий...

t04
31.05.2007, 19:21
половину перевел, но затруднения вот тут:
sidtn = (sidtn)%360;
Что значит %?

и я так понял что
stt = sth + "h" +stmo + "m" +sts +"s";<=>stt := sth + 'h' +stmo + 'm' +sts +'s';
Верно?

Joker-jar
31.05.2007, 19:32
% это остаток от деления

nerezus
31.05.2007, 21:02
Тут нету джавы.

nc.STRIEM
31.05.2007, 21:10
Тут нету джавы.
+1
пора уже различать, Java и JavaScript

_Great_
31.05.2007, 22:13
название топика отредактировано
nerezus, nc.STRIEM +1