Page 25 of 77

Re: Помогите новичку

Posted: Mon Dec 19, 2011 8:15 pm
by SoUrcerer
Собственно, переключать можно автоматически. Скажем, если оперативки больше 32 Мб - то видео отрисовывается в памяти. Если меньше - то выводится предупреждение, мол, свистелки отключены.

Re: Помогите новичку

Posted: Mon Dec 19, 2011 8:37 pm
by Mario
32 мало так и на приложения хрен останется, лучше при 64, а лучше вообще вручную - пользователю видней.

Re: Помогите новичку

Posted: Sun Dec 25, 2011 4:08 pm
by z525
1. В Колибри 0.7.7.0 есть две похожие программы
Spoiler:
openfile.png
openfile.png (14.42 KiB)
Viewed 4445 times
Исходники к Open File я найти не смог. Не подскажите где искать? На SVN есть исходники Opendialog, это эта программа?

2.Файлы с окончанием .mac для чего, где используются?

Re: Помогите новичку

Posted: Sun Dec 25, 2011 4:27 pm
by SoUrcerer
Open File - это диалоговое окно на основе X-tree. X-tree является устаревшей программой, как и диалог Opne file на базе X-tree. Вместо него следует использовать Opendialog. Примеры использования - например, tinypad.

Re: Помогите новичку

Posted: Sun Dec 25, 2011 5:41 pm
by z525
SoUrcerer wrote:Open File - это диалоговое окно на основе X-tree. X-tree является устаревшей программой, как и диалог Opne file на базе X-tree. Вместо него следует использовать Opendialog. Примеры использования - например, tinypad.
Всеравно хотелось бы на исходники посмотреть. Считаю что до тех пор пока программа работает, она может пригодиться кому-нибудь чем-нибудь. Просьба подсказать где ее последний исходник.
SoUrcerer wrote: Вместо него следует использовать Opendialog. Примеры использования - например, tinypad.
В tinypad? В том что в Колибри 0.7.7.0 эта функция есть? Для того чтобы открыть файл например появляеться только строчка для ввода внизу. Это и есть тот самый Opendialog?

Наверное нет но вопрос оставлю

Хотел скомпилировать tinypad с SVN но выходит ошибка
Spoiler:
error.png
error.png (5.88 KiB)
Viewed 4432 times

Re: Помогите новичку

Posted: Sun Dec 25, 2011 7:39 pm
by IgorA
z525 wrote:2.Файлы с окончанием .mac для чего, где используются?
Это файлы в которых находятся макросы. Хотя в них может находится и обычный код.
z525 wrote:Хотел скомпилировать tinypad с SVN но выходит ошибка
Скорее всего не подключен какой либо файл с макросом. illegal instruction - не легальная инструкция. Проблема с макросом header, потому что это не слово fasm.
z525 wrote:В tinypad? В том что в Колибри 0.7.7.0 эта функция есть? Для того чтобы открыть файл например появляеться только строчка для ввода внизу. Это и есть тот самый Opendialog?
Колибри 0.7.7.0 сильно устарела, потому в ней у tinypad еще нет Opendialog - а. Посмотри на вики :
http://wiki.kolibrios.org/wiki/OpenDialog/ru
Последний образ системы можно загрузить здесь :
http://builds.kolibrios.org/rus/
Исходники xtree можно посмотреть здесь :
http://websvn.kolibrios.org/filedetails ... sxtree.asm
Если у тебя есть svn, то посмотри их в папке (root)/programs/fs/sysxtree/trunk/

SysFn70 Подфункция 5 - получение информации о файле/папке

Posted: Sun Jan 01, 2012 3:17 pm
by 0CodErr
Вопрос про функцию 70, подфункцию 5.
В Wiki написано:
«Функция не поддерживает виртуальные папки типа /, /rd и корневые папки типа /rd/1.»

Это имеется в виду, что нельзя получить информацию только конкретно о таких папках?
Я пытался получить информацию о файле на рамдиске, и эта функция прекрасно работает.
То есть, если файл находится в виртуальной или корневой папке, то о нём информацию получить можно?

Re: Помогите новичку

Posted: Sun Jan 01, 2012 8:18 pm
by Mario
Информацию следует читать как есть, а не домысливать то чего нету. Раз сказано что нельзя читать информацию о самих виртуальных директориях, то причем тут информация о физических файлах, которые в них перечислены? Конкретные пути же указаны - написав их в качестве параметра:
* +20 = +0x14: ASCIIZ-имя файла, правила формирования имён указаны в
общем описании
или
* +20 = +0x14: db 0
* +21 = +0x15: dd указатель на ASCIIZ-строку с именем файла
К примеру:
db '/',0
db '/rd',0
db '/rd/X',0
db '/hdX',0
db /hdX/Y',0
db '/fd',0
db '/fd/X',0
db '/cdX',0
db '/cdX/Y',0
db '/bdX',0
db '/bdX/Y',0

где: Y номер раздела, X номер устройства

НЕЛЬЗЯ получить информацию. В остальных случаях, представляющих собой работу с физическими файлами и директориями, можно получать информацию.

Re: Помогите новичку

Posted: Sat Jan 07, 2012 12:25 pm
by Leency

Code: Select all

/* было, я переписал наново
union sProcessInfo
{
	Byte rawData[1024];
	struct
	{
		Dword cpu_usage;
		Word window_stack_position;
		Word window_stack_value;
		Word reserved1;
		char process_name[12];
		Dword memory_start;
		Dword used_memory;
		Dword PID;
		Dword x_start;
		Dword y_start;
		Dword x_size;
		Dword y_size;
		Word slot_state;
	} processInfo;
};*/

union sProcessInfo
{
	Byte rawData[1024];
	struct
	{
		Dword cpu_usage;
		Word window_stack_position;
		Word window_stack_value;
		Word reserved1;
		char process_name[12];
		char rezerv2;
		Dword memory_start;
		Dword used_memory;
		Dword PID;
		Dword x_start;
		Dword y_start;
		Dword x_size;
		Dword y_size;
		Word slot_state;
		Word rezerv3;
		Dword work_left;
		Dword work_top;
		Dword work_width;
		Dword work_height;
		char	status_window;
		Byte    reserved[1024-71];
	} processInfo;
};

// функция 9 - информация о процессе
Dword kos_ProcessInfo( sProcessInfo *targetPtr, Dword processID )
{
//	Dword result;

	//
	__asm{
		mov eax, 9
		mov ebx, targetPtr
		mov ecx, processID
		int 0x40
	}
}
kos_ProcessInfo( &sPI);
sPI.processInfo.cpu_usage = 0 и вообще любой показатель =0. Почему? Где ошибка?

Re: Помогите новичку

Posted: Sat Jan 07, 2012 12:32 pm
by SoUrcerer
Leency wrote:

Code: Select all

/* было, я переписал наново
union sProcessInfo
{
	Byte rawData[1024];
	struct
	{
		Dword cpu_usage;
		Word window_stack_position;
		Word window_stack_value;
		Word reserved1;
		char process_name[12];
		Dword memory_start;
		Dword used_memory;
		Dword PID;
		Dword x_start;
		Dword y_start;
		Dword x_size;
		Dword y_size;
		Word slot_state;
	} processInfo;
};*/

union sProcessInfo
{
	Byte rawData[1024];
	struct
	{
		Dword cpu_usage;
		Word window_stack_position;
		Word window_stack_value;
		Word reserved1;
		char process_name[12];
		char rezerv2;
		Dword memory_start;
		Dword used_memory;
		Dword PID;
		Dword x_start;
		Dword y_start;
		Dword x_size;
		Dword y_size;
		Word slot_state;
		Word rezerv3;
		Dword work_left;
		Dword work_top;
		Dword work_width;
		Dword work_height;
		char	status_window;
		Byte    reserved[1024-71];
	} processInfo;
};

// функция 9 - информация о процессе
Dword kos_ProcessInfo( sProcessInfo *targetPtr, Dword processID )
{
//	Dword result;

	//
	__asm{
		mov eax, 9
		mov ebx, targetPtr
		mov ecx, processID
		int 0x40
	}
}
kos_ProcessInfo( &sPI);
sPI.processInfo.cpu_usage = 0 и вообще любой показатель =0. Почему? Где ошибка?
Попробуй передавать не просто указатель на структуру, а указатель на структуру как именно на массив байт (т.е. явно укажи тип при передаче). Вообще не уверен, что все будет именно так со структурами в юнионах.

Re: Помогите новичку

Posted: Sat Jan 07, 2012 12:38 pm
by mike.dld
А почему функция объявлена с двумя параметрами, а ты передаёшь только один?..

Re: Помогите новичку

Posted: Sat Jan 07, 2012 12:46 pm
by Leency
Там где-то вначале ещё есть.
Dword kos_ProcessInfo( sProcessInfo *targetPtr, Dword processID = PROCESS_ID_SELF );
#define PROCESS_ID_SELF -1

SoUrcerer
Это как байт массив? Может там вообще юнионы не надо?

Re: Помогите новичку

Posted: Sat Jan 07, 2012 5:31 pm
by Serge
#pragma pack(push, 1) или __attribute__((packed)) не забыли ?

Re: Помогите новичку

Posted: Sat Jan 07, 2012 5:36 pm
by SoUrcerer
Мне так кажется, что это C--. Или мне кажется?

Re: Помогите новичку

Posted: Sat Jan 07, 2012 7:58 pm
by Leency
Это MSVC, а именно Косилка, если уж никто не может поправить, то приходится мне.
Где юзать #pragma pack(push, 1) или __attribute__((packed)) и что лучше?