Re: Помогите новичку
Posted: Tue Oct 08, 2013 4:56 pm
Кроме как при помощи ф70.5 можно проверить существование файла? А то не хочется как то, выделять память под всю структуру.
Если включить воображение:punk_joker wrote:Кроме как при помощи ф70.5 можно проверить существование файла? А то не хочется как то, выделять память под всю структуру.
Дело в том, что мне необходимы вариант как для файлов, так и для папок.Mario_r4 wrote:ф.70.1
* +12 = +0xC: dword: сколько байт читать, 1 байт.
З.Ы. Только для файлов, не для директорий.
Это суровый метод апостола Фомы.Mario_r4 wrote:Если включить воображение:
Структура маленькая, выделяй место в стеке и не мучайся ненужными сомнениями.punk_joker wrote:А то не хочется как то, выделять память под всю структуру
Для файлов ф.70.0 же.Mario_r4 wrote:ф.70.1
* +12 = +0xC: dword: сколько байт читать, 1 байт.
З.Ы. Только для файлов, не для директорий.
Тебе жалко 40 байт?punk_joker wrote:не хочется как то, выделять память под всю структуру.
Поэтому ф70.5.punk_joker wrote:мне необходимы вариант как для файлов, так и для папок.
Code: Select all
char* strchr(const char* string, int c)
{
while (*string)
{
if (*string==c)
return (char*)string;
string++;
}
return (char*)0;
}Code: Select all
char* strrchr(const char* string, int c)
{
int last_found;
while (*string)
{
if (*string==c)
{
last_found = string;
}
string++;
}
return (char*)last_found;
}Code: Select all
system/string.c: In function 'strrchr':
system/string.c:133:15: warning: assignment makes integer from pointer without a
cast [enabled by default]
last_found = string;Черт побери! А ты прав!0CodErr wrote:Для файлов ф.70.0 же.
Ну, мы тут все в чем то монахи, блин. В то время как космические корабли бороздят просторы больших театров...Serge wrote:Это суровый метод апостола Фомы.
char* - это указатель? В С-- указатель я использую dword, возможно это и неправильно.lev wrote:вероятно надо:
char* last_found;
...
last_found = (char*)string;
...
return last_found;
Оказывается нужно, т.к. const char* и char*Insolor wrote:Если объявить last_found как char *, то преобразование типов не нужно будет.
Т.е.
char* last_found;
...
last_found = string;
...
return last_found;
Ок, только не "т.к. const char* и char*" (это ни о чем мне не говорит), а "warning: assignment discards qualifiers from pointer target type". Так что да, приведение все-таки нужно.Leency wrote:Оказывается нужно, т.к. const char* и char*Insolor wrote:Если объявить last_found как char *, то преобразование типов не нужно будет.
Т.е.
char* last_found;
...
last_found = string;
...
return last_found;
Code: Select all
mov eax, [__var]
dpd [eax]
Code: Select all
dpd [ [_var] ]
Code: Select all
use32
org 0x0
;---------------------------------------------------------------------
db 'MENUET01'
dd 0x01, __START, __END, 0x1000, 0x1000, 0x0, 0x0
;---------------------------------------------------------------------
include 'macros.inc'
include 'debug.inc'
;=====================================================================
__START:
;=====================================================================
init_heap:
mcall 68, 11
cmp eax, 0
je exit
mov ecx, 4
add ecx, 4
add ecx, 1024
mcall 68, 12
mov [buff.x], eax
add eax, 4
mov [buff.y], eax
;---------------------------------------------------------------------
main:
mov eax, [buff.x]
mov [eax], 10
add eax, 4
mov [eax], 20
; ... ...
;---------------------------------------------------------------------
exit:
mcall 68, 13, [buff]
mcall -1
;---------------------------------------------------------------------
buff:
.x rd 0
.y rd 0
;=====================================================================
__END:
;=====================================================================