Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Вниз

Текст   Найти похожие ветки 

 
Shnabs   (2005-03-01 20:03) [0]

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


 
Fay ©   (2005-03-01 20:04) [1]

s := Copy(s, 1, Length(s) + 4)


 
Fay ©   (2005-03-01 20:05) [2]

минус 4 8)


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

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


 
novice_man ©   (2005-03-01 20:20) [4]

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


 
Fay ©   (2005-03-01 20:20) [5]

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


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

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


 
Zeqfreed ©   (2005-03-01 20:45) [7]

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;


 
begin...end ©   (2005-03-01 20:46) [8]

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

ChangeFileExt(Filename, "")


 
default ©   (2005-03-01 20:47) [9]

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


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

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


 
default ©   (2005-03-01 20:50) [11]

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


 
Zeqfreed ©   (2005-03-01 22:56) [12]

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

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


 
Anatoly Podgoretsky ©   (2005-03-01 23:23) [13]

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

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

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


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

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


однако !

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


 
GanibalLector ©   (2005-03-02 02:16) [15]

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


 
GanibalLector ©   (2005-03-02 02:19) [16]

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


 
TUser ©   (2005-03-02 07:42) [17]


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

Кругом наши!

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


 
Anatoly Podgoretsky ©   (2005-03-02 07:48) [18]

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


 
GuAV ©   (2005-03-02 12:23) [19]

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

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


 
Anatoly Podgoretsky ©   (2005-03-02 14:57) [20]

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


 
GanibalLector ©   (2005-03-03 03:28) [21]

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

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


 
Anatoly Podgoretsky ©   (2005-03-03 09:31) [22]

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

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"



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.038 c
8-1101715834
Алексей
2004-11-29 11:10
2005.03.20
WinampAPI


1-1110031060
Aleksandr.
2005-03-05 16:57
2005.03.20
Надо ли делать SetLength(Array,0)?


14-1109660918
Чеширский_Кот
2005-03-01 10:08
2005.03.20
Тегеран-43


1-1109882200
Еще_Новичек
2005-03-03 23:36
2005.03.20
Помогите с программой


1-1110063396
qqq2
2005-03-06 01:56
2005.03.20
Ошибочка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский