159 / 16 / 0
Регистрация: 14.09.2010
Сообщений: 419
Записей в блоге: 6
1
FASM

Из строки выделить путь к файлу

17.10.2011, 06:31. Показов 2155. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как получить "путь\к\файлу" ? Сначала думал мне scasb поможет, но что-то не то делаю

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
include '%fasm%/win32ax.inc'
section '.code' executable
start:
        invoke RegOpenKeyEx,HKEY_CURRENT_USER,'Software\Image-Line\FL Studio 10\General',NULL,KEY_READ,root
        invoke RegQueryValueEx,[root],'BackHTMLFileName',NULL,NULL,lpPath,lpcbData
        invoke RegCloseKey,[root]
        cld
        mov ecx,lpcbData
        lea edi,[lpPath]
        mov al,'\'
        repne scasb
        invoke MessageBox,NULL,edi,'',MB_OK
exit:
        invoke ExitProcess,NULL
 
.end start
 
section '.data' readable writeable
 
        root dd NULL
        lpPath rd MAX_PATH
        lpcbData dd MAX_PATH
строка выглядит примерно так - H:\10\FL\Artwork\Wallpapers\Browser.html
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.10.2011, 06:31
Ответы с готовыми решениями:

Дано полное имя файла, т.е путь к файлу, имя и расширение. Выделить из строки только имя первого католога
Помогите пожалуйста!!! Залание: Дано полное имя файла, т.е путь к файлу, имя и расширение....

Строки. Вывести путь к файлу построчно
Программа, которая при введении пути файла в виде А:\Вася\ПРОГРАММЫ\PASCAL\PascalABC.exe, сделала...

Выделить из строки с полным путем к файлу только имя файла
Дана строка, содержащая полное имя файла, то есть имя диска, список каталогов (путь), собственно...

Как из командной строки передать в программу путь к файлу?
Доброго времени суток, пишу пример программы (на стр 1002) выводящей на экран картинку, из книги...

3
Ушел с форума
Автор FAQ
16276 / 7601 / 1064
Регистрация: 11.11.2010
Сообщений: 13,616
17.10.2011, 13:48 2
semiono, функция GetFullPathName не может спасти отца русской демократии и особу, приближённую к Императору? (Ильф И., Петров Е "Двенадцать стульев ") ну и можно использовать scasb только читать придется с конца строки, поэтому используй перед поиском std, а после поиска не забудь командой cld вернуть DF=0
например так
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
.686
.model flat, stdcall
includelib user32.lib
extern _imp__MessageBoxA@16:dword
.data
string db 'H:\10\FL\Artwork\Wallpapers\Browser.html'
num = $ - string
.code
start: mov ecx,num
    mov edi,offset string + num
    std
    mov al,'\'
    repne scasb
    mov byte ptr [edi+1],0
    cld
    push 0
    push 0
    push offset string
    push 0
    call _imp__MessageBoxA@16
    retn
end start
Изображения
 
1
159 / 16 / 0
Регистрация: 14.09.2010
Сообщений: 419
Записей в блоге: 6
17.10.2011, 23:11  [ТС] 3
Mikl___, а ты что тоже читал 0xc стульев? Когда только всё успеваешь
Сделал передышку аж в полгода сейчас в голове восстанавливаю msdn, но это на пользу забыть а потом вспомнить, обычно тогда железно бывает.

Я ставил std, и по глюкам понял, что cld должен быть) Но с алгоритмом я что-то не справился,
сейчас посмотрю. Спасибо!

--->8--- На фасм зделал, а вот при чтении из реестра не получается
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
include '%fasm%/win32ax.inc'
section '.code' executable
start:
        mov ecx,i
        lea edi,[offset+i]
        mov al,'\'
        std
        repne scasb
        cld
        mov dword [edi+1],NULL
exit:
        invoke MessageBox,NULL,offset,'',MB_OK
        invoke ExitProcess,NULL
 
.end start
 
section '.data' readable writeable
 
        offset db 'H:\10\FL\Artwork\Wallpapers\Browser.html'
        i = $-offset
Добавлено через 37 минут
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
include '%fasm%/win32ax.inc'
section '.code' executable
start:
        invoke RegOpenKeyEx,HKEY_CURRENT_USER,'Software\Image-Line\FL Studio 10\General',NULL,KEY_READ,root
        invoke RegQueryValueEx,[root],'BackHTMLFileName',NULL,NULL,offset,lpcbData
        invoke RegCloseKey,[root]
 
        mov ecx,i
        lea edi,[offset+i]
        mov al,'\'
        std
        repne scasb
        cld
        mov dword [edi+1],NULL
exit:
        invoke MessageBox,NULL,offset,'',MB_OK
        invoke ExitProcess,NULL
 
.end start
 
section '.data' readable writeable
 
        root dd NULL
        lpcbData dd MAX_PATH
        offset rd MAX_PATH
        i = $-lpcbData
0
159 / 16 / 0
Регистрация: 14.09.2010
Сообщений: 419
Записей в блоге: 6
19.10.2011, 17:30  [ТС] 4
Ну пожалуйста, не пойму почему глюк. Тема весьма полезная для меня, хочу узнать.
0
19.10.2011, 17:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.10.2011, 17:30
Помогаю со студенческими работами здесь

Выделить из строки с полным путем к файлу само имя файла без расширения
String58. Дана строка, содержащая полное имя файла, то есть имя диска, спи-сок каталогов (путь),...

Дано полное имя файла, т.е путь к файлу, имя и расширение. Выделить с этого рядка имя файла без расширения/
C++

Дано полное имя файла, т.е путь к файлу, имя и расширение. Выделить с этого рядка имя файла без расширения
На с++

Как программно получить путь к файлу конфигураций программы (файлу user.config)?
Задался целью программно очистить параметры программы, которые сохраняются в файле user.config....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru