Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Текст [D7, WinXP]


Страницы:   1 2

Shnabs ©   (2005-03-01 20:03:00) 

Привет! Не подскажите, как в переменной строкового типа убрать 4 последних символа?


Anatoly Podgoretsky   (2005-03-03 09:31:00) [1]

Для подтверждения моих слов, выписка из справка

lpFileName

Points to a null-terminated string that specifies the name of the object (file, pipe, mailslot, communications resource, disk device, console, or directory) to create or open.

If *lpFileName is a path, there is a default string size limit of MAX_PATH characters. This limit is related to how the CreateFile function parses paths.
Windows NT: You can use paths longer than MAX_PATH characters by calling the wide (W) version of CreateFile and prepending "\\?\" to the path. The "\\?\" tells the function to turn off path parsing. This lets you use paths that are nearly 32,000 Unicode characters long. You must use fully-qualified paths with this technique. This also works with UNC names. The "\\?\" is ignored as part of the path. For example, "\\?\C:\myworld\private" is seen as "C:\myworld\private", and "\\?\UNC\tom_1\hotstuff\coolapps" is seen as "\\tom_1\hotstuff\coolapps"


GanibalLector   (2005-03-03 03:28:00) [2]

>платформе НТ
Как понять? Hyper-Threading что-ли? или имелось ввиду NT

И еще,а что вернет пятый параметр GetVolumeInformation на "платформе НТ"?Все таки нужно узнать это число...


Anatoly Podgoretsky   (2005-03-02 14:57:00) [3]

Как обрабатывать, так возврается PChar, а у него стандартное на данный момент ограничение 4 гб. В рамках существующих реалий ни каких проблем нет скажем с размером строки в 2 гб. Проблема только с определением размера буфера, данная функция не возвращает размер в случаи ошибки.


GuAV   (2005-03-02 12:23:00) [4]

Anatoly Podgoretsky ©   (02.03.05 7:48) [18]

А как тогда обрабатывать такие имена ? Некоторые функции (хотя бы GetModuleFileName) не возвращают необходимой длины...


Anatoly Podgoretsky   (2005-03-02 07:48:00) [5]

GuAV ©   (02.03.05 00:43) [14]
Это устаревшая константа, на платформе НТ длина пути может достигать 64 К


TUser   (2005-03-02 07:42:00) [6]


> В процессе юзанья TotalCommander дважды вошел в AV

Кругом наши!

ЗЫ. Используй Far - он мне AV ни разу не показал. А написан на Билдере.


GanibalLector   (2005-03-02 02:19:00) [7]

>оказывается максимум это MAX_PATH-1
Ну то понятно.Pchar...соответственно,последний #0
т.е.260 ;)


GanibalLector   (2005-03-02 02:16:00) [8]

А ведь GuAV прав.Кстати,только что юзал сабж...оказывается максимум это MAX_PATH-1
З.Ы.В процессе юзанья TotalCommander дважды вошел в AV ;)


GuAV   (2005-03-02 00:43:00) [9]

Anatoly Podgoretsky ©   (01.03.05 23:23) [13]
до много тысяц символов


однако !

А что же тодга есть MAX_PATH ?


Anatoly Podgoretsky   (2005-03-01 23:23:00) [10]

Если бы ты спросил не как убрать четыре последних символа, а описал бы что хочешь сделать, ответ бы был в первом или втором постинге. Навсякий случай следующее, убирать последних четыре символа для этой цели в принципе неверно. Расширение файла может быть от 0 до много тысяц символов, это не ДОС, где расширение было физическое понятие. В Виндоус это понятие логическое и служив больше для работы с ассоциациями или для преемственности. Вот тебе пример такого расширения prog.exe. manifest

Zeqfreed ©   (01.03.05 22:56) [12]
Это не наш метод (С)

Именно :-), нормальные герои всегда идут в обход (c) A66


Zeqfreed   (2005-03-01 22:56:00) [11]

begin...end ©   (01.03.05 20:46) [8]
default ©   (01.03.05 20:47) [9]
Это не наш метод (С)
=)

действительно, запамятовал о ChangeFileExt, щас зато не забуду )


default   (2005-03-01 20:50:00) [12]

"истина одна это сказал фараон..."(c)  :)


Shnabs   (2005-03-01 20:49:00) [13]

Вау круто!!! Редко бывает, что понимаете, что хочет чайник от вас.


default   (2005-03-01 20:47:00) [14]

Zeqfreed ©   (01.03.05 20:45) [7]
чтобы удалить расширение файла советую использовать всего одну строку: ChangeFileExt(FileName, '') :)


begin...end   (2005-03-01 20:46:00) [15]

> Zeqfreed ©   (01.03.05 20:45) [7]

ChangeFileExt(Filename, '')


Zeqfreed   (2005-03-01 20:45:00) [16]

Shnabs   (01.03.05 20:03)
Привет! Не подскажите, как в переменной строкового типа убрать 4 последних символа?

Я так полагаю это чтобы расширение файла убрать? Тогда следует задуматься об универсальности метода )

Например

function DeleteExtension(var Filename : String) : boolean;
var
Ext : String;
extl, p : Integer;
begin
Ext := ExtractFileExt(filename);
extl := Length(Ext);

P := Pos(Ext, Filename);
if P <> 0 then begin
 Delete(Filename, Length(Filename) - extl + 1 ,extl);
 Result := true;
end;
end;


Shnabs   (2005-03-01 20:21:00) [17]

Огромный спасиб!


Fay   (2005-03-01 20:20:00) [18]

2 default ©   (01.03.05 20:12) [3]
Точно. Чё-то меня колбасит 8(


novice_man   (2005-03-01 20:20:00) [19]

Delete(s, (Length(s) - 4) ,4);


default   (2005-03-01 20:12:00) [20]

SetLength(S, Length(S)-4) :)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо