Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кто сможет перевести код javascript`a в код Delphi 
V
    Опции темы
dilik
Дата 9.2.2007, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 9.5.2006
Где: CCCP

Репутация: нет
Всего: нет



Для тех кто знаком с яваскриптами и еще лучше знает Delphi!  smile 
Вот код яваскрипта, надо его переделать в код Delphi! Кто поможет? 

Код

 <script language=javascript>
ax=0;
function writeTable() {
    ax=Math.round(Math.random()*26);
    alphaArray=new Array("a", "n", "b", "d", "f", "h", "{", "i", "l", "v", "x", "z", "I", "J", "M", "N", "o", "O", "R", "S", "T", "U", "m", "6", "^", "u", "_", "[", "]")
    table="<table border=0 cellspacing=1 cellpadding=1 width='40%'><tr>"
    j=1;
    for ( i = 99 ; i >= 0 ; i-- ) {
        a=Math.round(Math.random()*26);
        if ( i%9 == 0 &&  i < 89 ) 
            a=ax;
        table+="<td class='numtd'>"+i+"</td><td class='symtd'>"+alphaArray[a]+"</td>"
        if ( j%10 == 0 ) 
            table+="</tr><tr>"    
        j++
    }
    table+="</table>"
    sym.innerHTML=table
    sh.innerHTML=""
}
function showAnswer() {
    sh.innerHTML=alphaArray[ax]
    sym.innerHTML="<h1><a href='javascript:writeTable()'>Невероятно:)(! Попробуем еще разок?</a></h1>"
}
</SCRIPT>


Кстати, вот примерный перевод в код Delphi. Может есть неточности, или вы предложите вариант универсальней. А главное как перевести функцию Result в код Delphi!

Код

 const
      alphaArray: Array[0..28] of char = ('a', 'n', 'b', 'd', 'f', 'h', '{', 'i', 'l', 'v', 'x', 'z', 'I', 'J', 'M', 'N', 'o', 'O', 'R', 'S', 'T', 'U', 'm', '6', '^', 'u', '_', '[', ']');
  var
      ax: Integer = 0;
      sh_innerHTML: String;

implementation

{$R *.dfm}

function writeTable(): String;
 var   table: String;
       i, j, a: Integer;
begin
  Randomize;
  ax := random(27);
  table := '<table border=0 cellspacing=1 cellpadding=1 width="40%"><tr>';
  j :=1;
  for i := 99 downto 0 do
  begin
      a := random(27);
      if (i mod 9 = 0) and (i < 89) then
        a := ax;
        table := table + '<td class="numtd">'+IntToStr(i)+'</td><td class="symtd">'+alphaArray[a]+'</td>';
        if (j mod 10 = 0) then
          table := table + '</tr><tr>';
        Inc(j);
  end;

  Result := table + '</table>';
end;

function showAnswer(): String;
begin
  sh_innerHTML := alphaArray[ax];
  Result := '<h1><a href="javascript:writeTable()">Невероятно:)(! Попробуем еще разок?</a></h1>';
end;

PM WWW ICQ   Вверх
dilik
Дата 9.2.2007, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 9.5.2006
Где: CCCP

Репутация: нет
Всего: нет



Вместо table предлагаю использовать StringGrid smile 
PM WWW ICQ   Вверх
Rennigth
Дата 9.2.2007, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



что-то на подобие, java-у незнаю, но чуток понимаю.  Что такое  sym и  sh ты не описал такшто звиняй, оставил как есть.


Код

const
  C_ALPHA_ARRAY: array[0..28] = ("a", "n", "b", "d", "f", "h", "{", "i", "l", "v", "x", "z", "I", "J", "M", "N", "o", "O", "R", "S", "T", "U", "m", "6", "^", "u", "_", "[", "]")

var
  FAX: Integer;

procedure WriteTable;
const
  C_NUM1: Integer = 26;
var
  FAX: Integer;
  i, j: Integer;
  lA: Integer;
  lTable: TStingList;
begin
  Randomize;
  lTable := TStringList.Create;
  try
    j := 1;
    lAX := Round(Random * C_NUM1);
    lTable.Add('"<table border=0 cellspacing=1 cellpadding=1 width='40%'><tr>"');
    for i := 99 downto 0 do
    begin
      lA := Round(Random * C_NUM1);
      if (i = 0) or (i < 89) then
        lA := lAX;
      lTable.Add('"<td class=''numtd''>"'+ i +'"</td><td class=''symtd''>"' +
        C_ALPHA_ARRAY[lA] + '"</td>"');
      if j mod 10 = 0 then { èçâèíè, íåçíàþ ÷òî òàêîå %, ìîãó îøèáàòüñÿ}
        lTable.Add('"</tr><tr>"');
      Inc(j);
    end;
    lTable.Add('"</table>"');


    sym.innerHTML := lTable.Text;
    sh.innerHTML := '""';

  finally
    lTable.Free;
  end;
end;

procedure ShowAnswer;
begin
  sh.innerHTML = C_ALPHA_ARRAY[FAX];
  sym.innerHTML = '"<h1><a href=''javascript:writeTable()''>Íåâåðîÿòíî:)(! Ïîïðîáóåì åùå ðàçîê?</a></h1>"';
end;



Добавлено @ 12:57 
т.е. так:
Код

const
  C_ALPHA_ARRAY: array[0..28] = ('a', 'n', 'b', 'd', 'f', 'h', '{', 'i', 'l', 'v', 'x', 'z', 'I', 'J', 'M', 'N', 'o', 'O', 'R', 'S', 'T', 'U', 'm', '6', '^', 'u', '_', '[', ']');

var
  FAX: Integer;

procedure WriteTable;
const
  C_NUM1: Integer = 26;
var
  FAX: Integer;
  i, j: Integer;
  lA: Integer;
  lTable: TStingList;
begin
  Randomize;
  lTable := TStringList.Create;
  try
    j := 1;
    lAX := Round(Random * C_NUM1);
    lTable.Add('<table border=0 cellspacing=1 cellpadding=1 width='40%'><tr>');
    for i := 99 downto 0 do
    begin
      lA := Round(Random * C_NUM1);
      if (i = 0) or (i < 89) then
        lA := lAX;
      lTable.Add('<td class=''numtd''>'+ i +'</td><td class=''symtd''>' +
        C_ALPHA_ARRAY[lA] + '</td>');
      if j mod 10 = 0 then { èçâèíè, íåçíàþ ÷òî òàêîå %, ìîãó îøèáàòüñÿ}
        lTable.Add('</tr><tr>');
      Inc(j);
    end;
    lTable.Add('</table>');


    sym.innerHTML := lTable.Text;
    sh.innerHTML := '';

  finally
    lTable.Free;
  end;
end;

procedure ShowAnswer;
begin
  sh.innerHTML = C_ALPHA_ARRAY[FAX];
  sym.innerHTML = '<h1><a href=''javascript:writeTable()''>Íåâåðîÿòíî:)(! Ïîïðîáóåì åùå ðàçîê?</a></h1>';
end;




--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Rennigth
Дата 9.2.2007, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



Блин, как всегда, сначала напишу а потом только проверю... smile
Код

const
  C_ALPHA_ARRAY: array[0..28] of Char = ('a', 'n', 'b', 'd', 'f', 'h', '{', 'i', 'l', 'v', 'x', 'z', 'I', 'J', 'M', 'N', 'o', 'O', 'R', 'S', 'T', 'U', 'm', '6', '^', 'u', '_', '[', ']');

var
  FAX: Integer;

procedure WriteTable;
const
  C_NUM1: Integer = 26;
var
  FAX: Integer;
  i, j: Integer;
  lA: Integer;
  lTable: TStringList;
begin
  Randomize;
  lTable := TStringList.Create;
  try
    j := 1;
    lA := Round(Random * C_NUM1);
    lTable.Add('<table border=0 cellspacing=1 cellpadding=1 width=''40%''><tr>');
    for i := 99 downto 0 do
    begin
      lA := Round(Random * C_NUM1);
      if (i mod 9 = 0) or (i < 89) then
        lA := FAX;
      lTable.Add('<td class=''numtd''>' + IntToStr(i) + '</td><td class=''symtd''>' +
        C_ALPHA_ARRAY[lA] + '</td>');
      if j mod 10 = 0 then { èçâèíè, íåçíàþ ÷òî òàêîå %, ìîãó îøèáàòüñÿ}
        lTable.Add('</tr><tr>');
      Inc(j);
    end;
    lTable.Add('</table>');


    sym.innerHTML := lTable.Text;
    sh.innerHTML := '';

  finally
    lTable.Free;
  end;
end;

procedure ShowAnswer;
begin
  sh.innerHTML = C_ALPHA_ARRAY[FAX];
  sym.innerHTML = '<h1><a href=''javascript:writeTable()''>Íåâåðîÿòíî:)(! Ïîïðîáóåì åùå ðàçîê?</a></h1>';
end;



Это сообщение отредактировал(а) Rennigth - 9.2.2007, 15:57


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
dilik
Дата 9.2.2007, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 9.5.2006
Где: CCCP

Репутация: нет
Всего: нет



спасибо smile 

Вот еще небольшой вопросик, как взять любой символ из массива символов и присвоить конкретной ячейке StringGrida?

Я пробовал так:

Объявляю массив:
Код

alpha: Array[0..28] of char = ('a', 'n', 'b', 'd', 'f', 'h', '{', 'i', 'l', 'v', 'x', 'z', 'I', 'J', 'M', 'N', 'o', 'O', 'R', 'S', 'T', 'U', 'm', '6', '^', 'u', '_', '[', ']');


Потом беру любое:

Код

Randomize;
a:=random(alpha[]);  // не знаю что писать в квадратных скобках
StringGrid1.Cells[1,1]:=a; 
;
PM WWW ICQ   Вверх
Rennigth
Дата 9.2.2007, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



Код

a := alpha[random(Length(alpha))]


Добавлено @ 18:05 
т.е.
Код

  a := alpha[random(Length(alpha) - 1)]




--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Nicholas_S
Дата 9.2.2007, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 19



Rennigth, проще:
Код

a := alpha[random(High(alpha))]



--------------------
...все в мире относительно
PM   Вверх
dilik
Дата 10.2.2007, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 9.5.2006
Где: CCCP

Репутация: нет
Всего: нет



нет, сделал все проще,вот код:

Код

alpha: Array[0..28] of char = ('a', 'n', 'b', 'd', 'f', 'h', '{', 'i', 'l', 'v', 'x', 'z', 'I', 'J', 'M', 'N', 'o', 'O', 'R', 'S', 'T', 'U', 'm', '6', '^', 'u', '_', '[', ']');

Randomize;
for k:=0 to 9 do
begin
i:=random(29);
StringGrid1.Cells[1,k]:=alpha[i];
end;

PM WWW ICQ   Вверх
Nicholas_S
Дата 10.2.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 19



Ха-ха! Так ты бы вопрос так и ставил, а то "переведите в КОД Дельфи".


--------------------
...все в мире относительно
PM   Вверх
dilik
Дата 10.2.2007, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 9.5.2006
Где: CCCP

Репутация: нет
Всего: нет



нет, на самом деле мне надо было перевести именно код яваскрипта в код делфи, но когда всё "перевелось", оказались многие строки ненужными. как говорится, всё гениальное - просто! smile 
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0898 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.