Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Помогите, плиз! :( (https://javascript.ru/forum/server/3250-pomogite-pliz.html)

Henry 31.03.2009 18:54

Помогите, плиз! :(
 
Как встроить автозапуск vbs скрипта в сообщение по e-mail????????

Gvozd 31.03.2009 19:03

Во-первых, уважаемый называйте темы подобающим образом, чтобы было понятно о чем они.
во-вторых, ваша задача, не имеет общего решения
ее можно попытатся решить для конкртеного веб-сервиса(ключевое слово попытатся)
в-третьих, это не законно, и такой эксплоит стоил бы бешенные деньги.
и в четвртых:Какого хрена вы полезли со своим VBS-ом на форум по JavaScript-у?

Чудо 23.05.2009 19:02

Помогите!!!!!!!
 
Люди добрые! Кто -нибудь может помочь сделать следующую задачу:

Написать скрипт “статистика”. В текстовую область заносится произвольный текст и по нажатию кнопки подсчитывается число знаков (включая пробелы) и число слов и эти значения выводятся в отдельное окно. (Используйте свойство length и методы indexOf(), charAt() текстовых переменных.).

Заранее огромное спасибо!!!!!

x-yuri 23.05.2009 20:30

можем помочь, определенно: спрашивай

Gvozd 23.05.2009 23:11

Цитата:

Сообщение от x-yuri
можем помочь, определенно: спрашивай

расшифровываю:
писать скрипт тебе никто не будет
но помочь можем.
потому что помощь мы видим, как все то, что поможет тебе научится, и немного вырасти над собой, до создания сообщения выше
а для этого надо, чтобы ты задал конкретные вопросы, по непонятному моменту.

Чудо 24.05.2009 12:17

Мне непонятно как использовать методы indexOf(), charAt() и свойство length. Как их так применить, что они работали для подсчёта слов и элементов в тексте? Я прошла 2-х часовой урок по javascript, прочитала об этих методах, но я всё равно ничего не понимаю. Мне в инсте дали это задание, но мы этого даже не проходили. Поэтому если можете, то объясните как-нить на простом языке, зачёт-то нужен!

Gvozd 24.05.2009 12:32

почитайте в гугле про конечные автоматы.
там же вы сможете найти как реализуется конечный автомат для вашего случая
вкратце, вы просматриваете по очереди все символы строки, меняя состояние специальной переменной
основные состояния:текущая позиция в слове, текущая позиция на пробеле, текущая позиция на первом символе слова
при обнаружении третьего состояния, увеличиваете счетчик слов
var qwe="qwee  qwed     asds";
var state=0;//состояние
var length=qwe.length;//длина строки в символах
for(var i=0;i<qwe.length;i++){
//тут реализуются условия конечного автомата для каждого символа текущего
if(qwe.charAt(i)=' ')//если i-й символ пробел
    state=2;//пробельное состояние
//дальше реализуем остальные состояния.....

}

Чудо 24.05.2009 13:25

Спасибо!!!=)

x-yuri 24.05.2009 23:14

ну конечные автоматы это как-то слишком научно и для более сложных ситуаций, имхо
я бы сказал так: делаем цикл по символам (for(var i=0;i<qwe.length;i++){), а в цикле - если текущий символ - пробел, а предыдущий - не пробел, увеличиваем счетчик слов
p.s. надо еще учесть, что строка может заканчиваться непробельным символом

Gvozd 24.05.2009 23:33

x-yuri,
а разве ты сейчас не конечный автомат описал словами?
простейший, но все же конечный автомат

x-yuri 25.05.2009 00:02

не знаю, но в любом случае я не вижу как может теория автоматов помочь мне в решении этой задачи

например, в педивикии написано, что "практически, теория автоматов применяется при разработке лексеров и парсеров для языков программирования, а также при построении компиляторов и разработке самих языков программирования"

Gvozd 25.05.2009 00:30

вы бы еще написали регулярку простейшую, и сказали бы что для решения этой задачи не нужно знания регулярок, подразумевая знание сложных регулярок.
вы описали кончный автомат.
в нем есть флаг состояния(предыдущий символ пробел или нет), и он анализирует строку символ за символ, и на основании обоих этих данных строит суждение о количестве слов.
все сходится с теорией конечного автомата.
то, что вы додумались до этого решения, не зная о конечных автоматах, не означает что они тут не были использованы.

x-yuri 25.05.2009 01:07

я не говорил, что я описал не конечный автомат. Я говорил, что не вижу как мне это знание может помочь. Эту задачу сложно решить без знания теории автоматов?

аналогия с регулярными выражениями неудачна, имхо

p.s. вроде на ты до этого говорили :-?

Gvozd 25.05.2009 01:35

Цитата:

Сообщение от x-yuri
Я говорил, что не вижу как мне это знание может помочь

ну, ты можеш составить алгоритм, без знания лишних теорий.
потому что стиль мышления такой. и у меня такой же.
а вот, человек не смог. вот я и направил его учить теорию
тебе знание этой теории не нужно для такой простой задачи
а ему может быть поможет. надеюсь что так.

Цитата:

Сообщение от x-yuri
p.s. вроде на ты до этого говорили

Проблема, в том, что для меня стиль общения на "Вы" является естественным в интернете.
в особенности на форуме.
по сути безусловный рефлекс я бы даже сказал
для того чтобы общатся на ты, мне надо либо начать общатся лично с человеком, например в аське, либо знать его в реале
так что не обращай внимание на ВЫкание

x-yuri 25.05.2009 01:41

Цитата:

а ему может быть поможет. надеюсь что так.
ну если поможет - хорошо :)

Photon 10.08.2009 19:17

Конечно, несколько поздновато, но всё же.. :)

Нафига тут конечные автоматы? :)
/*          
 * Функция подсчета количества символов и слов в тексте
 * obj      - id текстового поля, в которое вводится текст
 * obj_word - id поля, куда выводится количество слов
 * obj_char - id поля, куда выводится количество символов
 */
function count(obj, obj_word, obj_char) {
    var text = document.getElementById(obj).value;
    var char_cnt = text.length;
    while (text.indexOf('  ') != -1)
        text = text.replace('  ', ' ');
    if (char_cnt > 0) {
        var arWord = text.split(' ');
        var word_cnt = arWord.length;
    }
    else
        var word_cnt = 0;
    if(text.charAt(text.length - 1) == ' ')
        word_cnt--;
    document.getElementById(obj_word).value = word_cnt;
    document.getElementById(obj_char).value = char_cnt;
}

x-yuri 11.08.2009 01:27

ну я бы тогда начал с (хотя условие подразумевает проход по строке)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
    <title>title</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script>


        function count( s, word, char ) {

            var text = document.getElementById(s).value;
            document.getElementById(char).value = text.length;
            document.getElementById(word).value = text.replace(/^\s+/, '')
                                                      .replace(/\s+$/, '')
                                                      .split(/\s+/).length;
        }
</script>
</head>
<body>
    <input id="s" type="text">
    <input id="word" type="text">
    <input id="char" type="text">
    <input type="button" onclick="count('s', 'word', 'char');">
</body>
</html>

Photon 11.08.2009 02:11

Понятно, что с регулярками проще, но по заданию надо использовать indexOf() и charAt().
И, кстати, нигде в условии задачи я не увидел обязательного прохода по строке.

З.Ы. А вот про пробелы в начале строки я и не подумал.. :(

x-yuri 11.08.2009 04:08

Цитата:

Сообщение от Photon
И, кстати, нигде в условии задачи я не увидел обязательного прохода по строке.

я думаю, надо было ограничиться указанными методами/свойствами:
function count( s, word, char ) {

    var text = document.getElementById(s).value;
    document.getElementById(char).value = text.length;
    var i = 0, wordCnt = 0;
    while( i >= 0 ) {
        while( text.charAt(i) == ' ' ) 
            i++;
        if( i < text.length )
            wordCnt++;
        i = text.indexOf(' ', i);
    }
    document.getElementById(word).value = wordCnt;
}

x-yuri 11.08.2009 04:21

решение с конечными автоматами (это же оно?). Получилось неожиданно (для меня) симпатично. Gvozd, я их недооценивал :thanks: Хоть и с регэкспами читабельнее
function count( s, word, char ) {

    var text = document.getElementById(s).value;
    document.getElementById(char).value = text.length;
    var prv = ' ', wordCnt = 0;
    for( var i=0; i<text.length; i++ ) {
        if( text.charAt(i) != ' ' &&   prv == ' ' )
            wordCnt++;
        prv = text.charAt(i);
    }
    document.getElementById(word).value = wordCnt;
}

UPD: похоже это все-таки не конечные автоматы

x-yuri 14.08.2009 06:57

хотя... предыдущий вариант же - производный от
function count( s, word, char ) {

    var text = document.getElementById(s).value;
    document.getElementById(char).value = text.length;
    var word, wordCnt=0;
    for( var i=0; i<text.length; i++ ) {
        if( word )
            if( text.charAt(i) == ' ' )
                word = false;
            else
                word = true;
        else if( word == false )
            if( text.charAt(i) == ' ' )
                word = false;
            else {
                wordCnt++;
                word = true;
            }
        else
            if( text.charAt(i) == ' ' )
                word = false;
            else {
                wordCnt++;
                word = true;
            }
    }
    document.getElementById(word).value = wordCnt;
}


Часовой пояс GMT +3, время: 10:23.