· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ZEN —› 13,10 или просто 10, т.е. \r\n или просто \n ?

<< . 1 . 2 .

Посл.отвђт Сообщенiе


Дата: Июн 30, 2004 12:00:26

q_q
Попробовал w2ksp4. Содержимое 31 0A 31 0A 31 0A. В результате три единицы в разных строках.
Ну, на 98-ых не так, а "лестницей". ДОСовская программа с выводом через 9/int21 тоже каретку в начало не вертает.

На консоль, по-твоему -
- на терминал :-).

msvcrt.printf - это winapi?
WriteConsole и WriteFile - это win api. А ты к словам привязываешься.


Дата: Июн 30, 2004 12:44:43

Anonimka
на 98-ых не так ... ДОСовская программа ... тоже
Действительно под w98 type ведет себя иначе. Наверное, потому что его реализация - наследие dos'а.

ДОСовская программа
В первом моем сообщении в этой ветке я писал про Си/Си++ и ее/их библиотеки ввода-вывода, ибо изначально /n/r принадлежат им.

к словам привязываешься
printf все-таки уровнем повыше.

Возможно, мой пример узко специализирован, однако, наблюдая за сообщениями Asterix у меня сложилось впечатление, что его интересует программирование под win (Мой код ведет себя корректно под w98), не ниже native level.


Дата: Июн 30, 2004 14:28:57

q_q
В первом моем сообщении в этой ветке я писал про Си/Си++ и ее/их библиотеки ввода-вывода, ибо изначально /n/r принадлежат им.
Воистину! Я всего лишь против того, чтоб однозначно отождествлять 0а с \n.


Дата: Июн 30, 2004 15:54:31

Anonimka
> Я всего лишь против того, чтоб однозначно отождествлять 0а с \n.

А с чем же тогда его отождествлять?

q_q
> наблюдая за сообщениями Asterix у меня сложилось впечатление, что его интересует программирование под win

Точно! Но я хотел разобраться, есть ли какой-нибудь стандарт на вывод таких строк, чтоб не экспериментировать а точно знать что это будет работать в любых виндах.

Сам я когда тестировал написал такую программку:
format PE console
entry start

include '%fasminc%\win32a.inc'

ENABLE_PROCESSED_INPUT  =  0001h


section '.code' code readable executable

align 4
start:
   invoke GetStdHandle, STD_OUTPUT_HANDLE
   mov [hOutPut], eax
   mov eax, 12ABCDEFh
   cinvoke wsprintf, szBuff, format_string, eax
   invoke WriteFile, [hOutPut], szBuff, eax, NumberOfBytesWritten, NULL
   invoke WriteFile, [hOutPut], OutputString, OutputString_len, NumberOfBytesWritten, NULL
   invoke GetStdHandle, STD_INPUT_HANDLE
   mov [hInput], eax
   invoke SetConsoleMode, eax, ENABLE_PROCESSED_INPUT
@@:
   invoke ReadFile, [hInput], szBuff, 1, NumberOfBytesWritten, NULL
   cmp BYTE [szBuff], 'q'
   je @F
   cmp BYTE [szBuff], 'Q'
   jne @B
@@:
   invoke ExitProcess, 0


section '.data' data readable writeable

format_string         db  "%08lX",13,10,0
OutputString          db  "Press 'q' to quit",13,10
OutputString_len       =  $ - OutputString
szBuff                rb  11

align 4
hOutPut               dd  ?
NumberOfBytesWritten  dd  ?
hInput                dd  ?


section '.idata' import data readable writeable

library kernel32,'KERNEL32.DLL',\
          user32,'USER32.DLL'

include '%fasminc%\APIA\KERNEL32.INC'
include '%fasminc%\APIA\USER32.INC'


Кстати, при попытке вывести цветной текст(с каждой выведенной строчкой новый цвет) столкнулся с тем что раскрашивается вся строка до конца консольного окна а должно быть ограничено только областью текста :-(


Дата: Июн 30, 2004 19:52:56

Да, \n && \r и их сочетание - это справедливо для текста.Для консоли(в юнихе, по крайней мере) тоже.


Дата: Июл 1, 2004 04:02:05

Asterix
А с чем же тогда его отождествлять? ... чтоб не экспериментировать а точно знать что это будет работать в любых виндах
Для dos/win, unix сишный компилятор на шаге компиляции заменяет '\n' на 0Ah, для mac предполагаю на 0Dh. Если твой код не будет использовать cишные функции вывода на консоль, то используй пару 0Dh, 0Ah.

при попытке вывести цветной текст
Покажешь свой код или это завуалированная просьба показать пример? Пример использования console api см. psdk_samples\winbase\Console\Console.


Дата: Июл 1, 2004 04:27:08

q_q
> Покажешь свой код или это завуалированная просьба показать пример? Пример использования console api см. psdk_samples\winbase\Console\Console.

Ну вот код к примеру такой.
У меня psdk не полный поэтому пример не смогу посмотреть.
format PE console
entry start

include '%fasminc%\win32a.inc'

FOREGROUND_BLUE         =  0001h   ; text color contains blue
FOREGROUND_GREEN        =  0002h   ; text color contains green
FOREGROUND_RED          =  0004h   ; text color contains red
FOREGROUND_INTENSITY    =  0008h   ; text color is intensified
BACKGROUND_BLUE         =  0010h   ; background color contains blue
BACKGROUND_GREEN        =  0020h   ; background color contains green
BACKGROUND_RED          =  0040h   ; background color contains red
BACKGROUND_INTENSITY    =  0080h   ; background color is intensified

ENABLE_PROCESSED_INPUT  =  0001h
ENABLE_LINE_INPUT       =  0002h
ENABLE_ECHO_INPUT       =  0004h
ENABLE_WINDOW_INPUT     =  0008h
ENABLE_MOUSE_INPUT      =  0010h


section '.code' code readable executable

align 4
start:
   invoke GetStdHandle, STD_OUTPUT_HANDLE
   mov [hOutPut], eax
   invoke SetConsoleTextAttribute, eax,\
                                   FOREGROUND_RED or \
                                   BACKGROUND_RED or \
                                   BACKGROUND_GREEN or \
                                   FOREGROUND_INTENSITY or \
                                   BACKGROUND_INTENSITY
   mov eax, 12ABCDEFh
   cinvoke wsprintf, szBuff, format_string, eax
   invoke WriteFile, [hOutPut], szBuff, eax, NumberOfBytesWritten, NULL
   invoke SetConsoleTextAttribute, [hOutPut],\
                                   FOREGROUND_BLUE or \
                                   BACKGROUND_RED or \
                                   BACKGROUND_GREEN or \
                                   BACKGROUND_BLUE or \
                                   FOREGROUND_INTENSITY or \
                                   BACKGROUND_INTENSITY
   invoke WriteFile, [hOutPut], OutputString, OutputString_len, NumberOfBytesWritten, NULL
   invoke GetStdHandle, STD_INPUT_HANDLE
   mov [hInput], eax
   invoke SetConsoleMode, eax, ENABLE_PROCESSED_INPUT
@@:
   invoke ReadFile, [hInput], szBuff, 1, NumberOfBytesWritten, NULL
   cmp BYTE [szBuff], 'q'
   je @F
   cmp BYTE [szBuff], 'Q'
   jne @B
@@:
   invoke ExitProcess, 0


section '.data' data readable writeable

format_string         db  "%08lX",13,10,0
OutputString          db  "Press 'q' to quit",13,10
OutputString_len       =  $ - OutputString
szBuff                rb  11

align 4
hOutPut               dd  ?
NumberOfBytesWritten  dd  ?
hInput                dd  ?


section '.idata' import data readable writeable

library kernel32,'KERNEL32.DLL',\
          user32,'USER32.DLL'

include '%fasminc%\APIA\KERNEL32.INC'
include '%fasminc%\APIA\USER32.INC'


Дата: Июл 1, 2004 05:11:49

Asterix
У тебя консоль w98?
На w2k/wxp это выглядит как в аттаче.

пример не смогу посмотреть
Хочешь приаттачу? Исходники на Си + exe.

_1213120391__con1.gif


Дата: Июл 1, 2004 05:36:20

К сожалению в 98-й оно выглядит так(приаттачил)

> Хочешь приаттачу? Исходники на Си + exe.

Давай.

1038422000__console.png


Дата: Июл 1, 2004 05:56:25

Во прикол, а в 2k то оно всё нормально, вот:

997357189__CONS_2K.PNG


Дата: Июл 1, 2004 07:06:16

Asterix
Исходники.

374447866__console_src.rar


Дата: Июл 1, 2004 07:06:47

Asterix
Результат.

2081423730__console_exe.rar


Дата: Июл 1, 2004 15:28:36 · Поправил: Asterix

q_q

Спасибо за исходник.
Судя по всему придётся отказаться от использования цветного фона в моём примере.

<< . 1 . 2 .


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.067