Win32 вопросы

Использование и разработка софта (преимущественно на ПЦ)

Moderator: Shaos

bar
Senior
Posts: 185
Joined: 07 Aug 2006 10:18

Post by bar »

Shaos wrote:А на JS не проще будет такое накодить и повесить где-нить у нас на недопц? ;)
О, да. Про js-то я и забыл. Можно вообще обойтись без монструозных офисов и зубодробительных VBA. И, кстати, даже и без кнопок. Всё будет происходить на полном автомате. Правда не очень понятно как получить binary файл без GET запроса с последующим выбором файла для сохранения. Но это уже мелочи.
User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

bar wrote:
Shaos wrote:А на JS не проще будет такое накодить и повесить где-нить у нас на недопц? ;)
О, да. Про js-то я и забыл. Можно вообще обойтись без монструозных офисов и зубодробительных VBA. И, кстати, даже и без кнопок. Всё будет происходить на полном автомате. Правда не очень понятно как получить binary файл без GET запроса с последующим выбором файла для сохранения. Но это уже мелочи.
в текстовое окошко можно вывести в хексе - чтобы потом копипастить и программатором в пзу...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Shaos wrote:в текстовое окошко можно вывести в хексе - чтобы потом копипастить и программатором в пзу...
Каким нафех программатором? :o Оно потом в модель "Протеуса" в ПЗУ подставляется -
и прогон тестов...
iLavr
User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Lavr wrote:
Shaos wrote:в текстовое окошко можно вывести в хексе - чтобы потом копипастить и программатором в пзу...
Каким нафех программатором? :o Оно потом в модель "Протеуса" в ПЗУ подставляется -
и прогон тестов...
ну он поди hex-формат тоже прожуёт, не? ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

не... тока бинарник чистый - как реально в ПЗУ
iLavr
User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Lavr wrote:не... тока бинарник чистый - как реально в ПЗУ
странно - я думал эта софтина должна за такие бабки поддержать все форматы, которые понимает любой программатор...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Бабки ашаленные... они вощще апупели... :o
iLavr
User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Lavr wrote:Бабки ашаленные... они вощще апупели... :o
хотя квота на сайте просит стошечку в год (но триста за два года) - это ещё терпимо ;)

P.S. ха - по кнопке NEXT они уже совсем иную цифру показывают - почти штуку, да пошли они в баню с такими ценами :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
bar
Senior
Posts: 185
Joined: 07 Aug 2006 10:18

Post by bar »

Во. Оно конечно не полнофункционально. Лишь табличка с возможностью редактирования. Да и табличку бы не помешало покрасивше сделать. Но у меня ff почему-то падает, когда я пытаюсь в firebug'е в DOM модели поковыряться. А так, наизусть, я не помню всех этих HTML-атрибутов и CSS-стилей.
Но и тем не менее единички на нулики и обратно можно менять в один клик. Все данные при этом хранятся построчно в глобальной переменной data -- в двумерном массиве.

tmp.html:

Code: Select all

<!DOCTYPE HTML> <!-- blah-blah-blah -->
<html>
  <head>
    <script language="javascript" type="text/javascript" src="tmp.js"></script>
  </head>
  <body>
    <button onclick="make_table(16, 16)">Make table</button>
    <table></table>
  </body>
</html>
tmp.js:

Code: Select all

/* place_for_table: xpath-expression for node that will be replaced with newly
 * created table*/
var place_for_table = "/html/body/table";

var true_fg_color = "#000000";
var true_bg_color = "#ffffff";
var false_fg_color = "#ffffff";
var false_bg_color = "#000000";


var table_width = 0, table_height = 0;
var data = new Array();
var hex_cells = new Array();

function update_hex(row)
{
    var i, num = 0;
    for(i = 0; i < table_width; i ++) {
        num *= 2;
        num += data[row][i];
    }
    hex_cells[row].firstChild.nodeValue = "0x" + num.toString(16);
}

function on_cell_click(event, row, col)
{
    var td, value;
    td = event.target;
    value = td.firstChild.nodeValue;
    if(value == 0) {
        td.firstChild.nodeValue = "1";
        td.style.backgroundColor = true_bg_color;
        td.style.color = true_fg_color;
        data[row][col] = 1;
    } else {
        td.firstChild.nodeValue = "0";
        td.style.backgroundColor = false_bg_color;
        td.style.color = false_fg_color;
        data[row][col] = 0;
    }
    update_hex(row);
}
function make_on_cell_click_handler(row, col)
{
    return function (event) {
        on_cell_click(event, row, col);
    }
}

function make_editbox(chars)
{
    var input = document.createElement("input");
    input.type = "text";
    input.value = "";
    input.size = chars;
    return input;
}

function make_tr(bgcolor, id)
{
    var tr = document.createElement("tr");
    if(bgcolor)
        tr.style.backgroundColor = bgcolor;
    if(id)
        tr.id = id;
    return tr;
}

function make_row(n, width)
{
    var tr, td, row_name;
    data[n] = new Array();
    tr = make_tr("#e1e1e1");
    /* Label */
    td = document.createElement("td");
    td.appendChild(make_editbox(8));
    tr.appendChild(td);
    /* Bits */
    for(var i = 0; i < width; i ++) {
        if(i != 0 && i % 8 == 0) {
            td = document.createElement("td");
            td.appendChild(document.createTextNode(""));
            tr.appendChild(td);
        }
        td = document.createElement("td");
        td.appendChild(document.createTextNode("0"));
        data[n][i] = 0;
        td.style.backgroundColor = false_bg_color;
        td.style.color = false_fg_color;
        td.addEventListener("click", make_on_cell_click_handler(n, i));
        tr.appendChild(td);
    }
    /* hex */
    td = document.createElement("td");
    td.appendChild(document.createTextNode(""));
    tr.appendChild(td);
    hex_cells[n] = td;
    update_hex(n);
    return tr;
}

function make_table(width, height)
{
    function make_header_0()
    {
        var tr, th, input;
        tr = make_tr();
        th = document.createElement("th");
        th.width = 100;
        tr.appendChild(th);
        for(var i = 0; i < width; i ++) {
            if(i != 0 && i % 8 == 0) {
                th = document.createElement("th");
                tr.appendChild(th);
            }
            th = document.createElement("th");
            th.align = "center";
            tr.appendChild(th);
        }
        td = document.createElement("th");
        td.appendChild(document.createTextNode("Hex"));
        tr.appendChild(td);
        return tr;
    }
    function make_header()
    {
        var tr, td, input;
        tr = make_tr("#818181");
        td = document.createElement("td");
        td.appendChild(document.createTextNode("asdf"));
        tr.appendChild(td);
        for(var i = 0; i < width; i ++) {
            if(i != 0 && i % 8 == 0) {
                td = document.createElement("td");
                td.appendChild(document.createTextNode(""));
                tr.appendChild(td);
            }
            td = document.createElement("td");
            td.appendChild(make_editbox(4));
            tr.appendChild(td);
        }
        td = document.createElement("td");
        td.appendChild(document.createTextNode("Hex"));
        tr.appendChild(td);
        return tr;
    }
    var table = document.createElement("table");
    table_width = width;
    table_height = height;
    table.setAttribute("cellspacing", "1");
    table.setAttribute("cellpadding", "4");
    table.border = 0;
    var body = document.createElement("tbody");
    table.appendChild(body);
    body.appendChild(make_header());
    for(var i = 0; i < height; i ++) {
        body.appendChild(make_row(i, width));
    }
    var node_to_rplce = document.evaluate(
        place_for_table, document, null,
        XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
    node_to_rplce.parentNode.replaceChild(table, node_to_rplce);
}
UPD. идентацию перекосило. заменил \t на пробелы -- вродь ничего.
User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

bar, ну ты крут ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

У меня это выглядит вот так:

Image
(включен режим - масштаб: 50%)

По кликам ничего в таблице не меняет, об ошибках - также ничего не говорит.... :(


PS. Я - со всем уважением к вашей квалификации, джентльмены, но JS -
это путь немного не туда.
Мне не страшен "выхлоп" в HEX - я вполне с удовольствием порой
пользуюсь "Прекрасным ассемблером К580ВМ80" на JS, т.к. есть утилиты
HEX2BIN и BIN2HEX.
Но с учетом того, что BIN-прошивку ПЗУ надо втаскивать на редакцию,
мы, получается, заменяем один комплект неудобных программ другим.


PPS. На работе под Firefox/3.6.25 не заработало совсем... :(
iLavr
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

ALS wrote:В свойствах Columns для каждой колонки выставить MaxWidth=30,
MinWidth=30 и Width=30 (ну или любое другое значение).
Вот этот совет мне попадался в Интернете до того, как я задал вопрос здесь.
Попадался он на сайте Делфи, и похоже, что он верный...

Вот только я никак не соображу, как это в Win32 сделать... :(

Width у меня выставляется вот так:
Call SendMessage(.hWnd, LVM_SETCOLUMNWIDTH, ColumnIndex - 1, ByVal Style)

а вот для MaxWidth и для MinWidth я, похоже, не знаю нужной константы...

Придётся ковырять *.h-файлы Билдера... как я это не люблю, когда не знаю,
что искать... но поищу SETCOLUMNWIDTH может остальное найдётся рядом... :-?
Last edited by Lavr on 05 Sep 2012 12:38, edited 1 time in total.
iLavr
User avatar
ALS
Senior
Posts: 123
Joined: 07 Aug 2012 11:11
Location: Севастополь

Post by ALS »

Да, я, похоже, протупил... Почему-то при виде сочетания "List View control" я автоматом решил, что речь идет о делфи.
А о заголовке сообщения забыл (

ЗЫ
Так, в порядке бреда - есть параметры LVSCW_AUTOSIZE и LVSCW_AUTOSIZE_USEHEADER. С ними не пробовали "поиграться" ?
Last edited by ALS on 05 Sep 2012 12:39, edited 1 time in total.
bar
Senior
Posts: 185
Joined: 07 Aug 2006 10:18

Post by bar »

Lavr wrote:По кликам ничего в таблице не меняет, об ошибках - также ничего не говорит.... :(
А в каком браузере, если не секрет?
PPS. На работе под Firefox/3.6.25 не заработало совсем...
NoScript? AdBlock? Сей код, на самом деле, по большей части копипаст из моего скрипта фиксящего ie-вёрстку некоего сайта, который у меня не функционировал в ff. И если я не ошибаюсь, тот скрипт создавался примерно во времена ff 3.6. То есть оно весьма вряд ли может не работать в ff 3.6
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

bar wrote:А в каком браузере, если не секрет?
Да какой секрет - я уж зарекламировал этот браузер тут! :lol: И все меня уже
многократно заругали:"Опера9.64".

Но вот почему под Firefox/3.6.25 не заработало совсем - меня неподецки
удивило!
bar wrote:Но у меня ff почему-то падает, когда я пытаюсь в firebug'е в DOM модели поковыряться.
А у меня в Firefox не появилось ваабще ничего! :o
JS - включен, я проверил.
iLavr