|
|
| Посл.отвђт | Сообщен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 |
|
|
Дата: Июл 1, 2004 07:06:16 |
|
|
Дата: Июл 1, 2004 07:06:47 |
|
|
Дата: Июл 1, 2004 15:28:36 · Поправил: Asterix q_q Спасибо за исходник. Судя по всему придётся отказаться от использования цветного фона в моём примере. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.067 |