Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26066
Рейтинг: 2120
#16: 2017-09-24 14:58:33 ЛС | профиль | цитата
Tad писал(а):
В Windows все пути с обратным слэшем.

Я оговорился -- с прямым. Ссылки имеют прямой слэш.

--- Добавлено в 2017-09-24 15:20:06

Да, еще почему я отказался от применения KOL-их функций парсирования. Они в своем составе используют глючные функции сканирования символов (они еще и недостаточно быстрые), которые мы совместными усилиями (отдельное спасибо Galkov-y) поправили у себя в компоненте StrEnum. Его функции и используются (как и в многих других компонентах) при парсировании путей.

Редактировалось 4 раз(а), последний 2017-09-24 15:22:56
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#17: 2017-09-24 15:40:17 ЛС | профиль | цитата
Ну и надо было ещё вводить MODE
 const slash: array[0..1] of char = ('\','/'); // Windows - PHP,HTML
Или оформлять отдельными компонентами.

Редактировалось 6 раз(а), последний 2017-09-24 16:16:19
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26066
Рейтинг: 2120
#18: 2017-09-24 17:23:51 ЛС | профиль | цитата
Tad писал(а):
Ну и надо было ещё вводить MODE

Работает... работает, вот и пусть работает как есть. На этом и порешим. А то начинается размножение сущностей. Не сильно-то быстродействие от добавления лишней проверки изменяется, тем более, что применен ускоренный парсер.
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#19: 2017-09-24 17:26:28 ЛС | профиль | цитата
Согласен.
Основной закон механика (и всех нормальных людей): Работает? Не трогай !!!


Редактировалось 3 раз(а), последний 2017-09-24 18:12:29
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1925
Рейтинг: 172
#20: 2017-09-24 19:39:36 ЛС | профиль | цитата
Уф, весь день на работе был, сейчас протестирую!
Ну, вроде теперь работает правильно. Проверял по-разному на входе:
C:\windows\notepad.exe
windows\notepad.exe
notepad.exe
notepad

Т.к. на вход может прийти полное имя с путём, может прийти относительное (без диска), может прийти только имя файла с расширением (и его нужно тоже корректно обработать - отделить расширение и имени), а также только имя файла без расширения (например, расширения просто нет).
Во всех случаях методы работают корректно.

Tad писал(а):

Вопрос: А зачем пляски с бубном вокруг "/" ?
И чё, функции
ExtractFilePath
ExtractFileName
ExtractFileNameWOext
ExtractFileExt
уже не котируются?


Прямой слеш имеют URL, их тоже удобно парсить этим компонентом.

И напоследок - для любителей нештатных компонентов - http://forum.hiasm.com/topic/3931. Спустя 10 лет (см. пост #3 там)!

Редактировалось 2 раз(а), последний 2017-09-24 19:39:59
карма: 9
0
Ответов: 16884
Рейтинг: 1239
#21: 2017-09-24 23:21:38 ЛС | профиль | цитата
3042 писал(а):
Прямой слеш имеют URL
Я в курсе.
nesco, так и не нашел, что у Кладова не работает.

Add(MainForm,2953706,63,238)
{
Width=444
Height=352
Position=1
}
Add(InlineCode,7507790,315,238)
{
WorkPoints=#6:doWork|
EventPoints=#3:Res|
DataPoints=#4:Path|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|22:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|23: path, res:THI_Event;|49: procedure doWork(var _Data:TData; Indew:Word);|5: end;|0:|14:implementation|29:procedure THiAsmClass.doWork;|17:var s,p,f:string;|14: i:boolean;|5:begin|9:i:=false;|31:s:= ReadString(_Data,path,''); |18:if s='' then exit;|61:If pos('/',s)<>0 then begin replace(s,'/','\'); i:=true; end;|24:p := ExtractFilePath(s);|24:f := ExtractFileName(s);|29:if i then replace(p,'\','/');|37:_hi_OnEvent(res,'Путь к файлу:; '+p);|35:_hi_OnEvent(res,'Полное имя: ;'+f);|65:_hi_OnEvent(res,'Имя без расширения: ;'+ExtractFileNameWOext(f));|60:_hi_OnEvent(res,'Расширение с точкой: ;'+ExtractFileExt(f));|72:_hi_OnEvent(res,'Расшиоение без точки: ;'+copyend(ExtractFileExt(f),2));|21:_hi_OnEvent(res,';');|4:end;|4:end.|
link(Res,4967300:doAdd,[])
}
Add(Edit,4761174,224,175)
{
Left=95
Top=10
Width=325
Text="C:\Program Files\Borland\Delphi7\Projects\Unit1.dcu"
}
Add(Button,13860458,105,238)
{
Left=15
Top=5
Caption="Win"
link(onClick,8663901:doData,[])
}
Add(Button,551902,105,280)
{
Left=15
Top=35
Caption="URL"
link(onClick,7276878:doData,[])
}
Add(Edit,4040794,175,175)
{
Left=95
Top=35
Width=325
Text="http://forum.hiasm.com/topic/66676/1"
}
Add(DoData,8663901,224,238)
{
link(onEventData,491796:doWork2,[])
link(Data,4761174:Text,[])
}
Add(DoData,7276878,175,280)
{
link(onEventData,491796:doWork3,[(291,286)])
link(Data,4040794:Text,[])
}
Add(StringTable,4967300,371,238)
{
Top=64
Width=428
Height=250
Align=4
Columns=#5:1=150|5:2=250|
Grid=0
}
Add(HubEx,491796,287,238)
{
link(onEvent,7507790:doWork,[])
}

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1925
Рейтинг: 172
#22: 2017-09-25 04:27:05 ЛС | профиль | цитата
Tad писал(а):
что у Кладова не работает.


Так в этом IC тоже пляски с бубном вокруг "/"

Редактировалось 1 раз(а), последний 2017-09-25 04:27:13
карма: 9
0
Ответов: 16884
Рейтинг: 1239
#23: 2017-09-25 06:28:07 ЛС | профиль | цитата
3042 писал(а):
Так в этом IC тоже пляски с бубном вокруг "/"
Так это не моя вина. Я предлагал
Tad писал(а):
оформлять отдельными компонентами.
А создателям захотелось в одном флаконе.
// О птичках... Ещё я бы строку
FPart := ReadString(_Data, _data_FileName, '');
// поменял на
FPart := Trim(ReadString(_Data, _data_FileName, ''));
( догадайся зачем )

Редактировалось 1 раз(а), последний 2017-09-25 06:30:06
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1925
Рейтинг: 172
#24: 2017-09-25 06:51:00 ЛС | профиль | цитата
Tad писал(а):
оформлять отдельными компонентами.

Как это? Для отделения пути, имени и расширения - каждый отдельный компонент, что ли?
карма: 9
0
Ответов: 16884
Рейтинг: 1239
#25: 2017-09-25 07:25:44 ЛС | профиль | цитата
3042 писал(а):
Как это?
Для Path - свой компонент.
Для URL - свой.

Редактировалось 1 раз(а), последний 2017-09-25 07:27:05
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 4621
Рейтинг: 746
#26: 2017-09-25 11:01:03 ЛС | профиль | цитата
Tad писал(а):
Для URL - свой.
Для URL - тут: /topic/62708

Редактировалось 1 раз(а), последний 2017-09-25 11:01:19
карма: 26

0
Ответов: 2059
Рейтинг: 131
#27: 2017-09-25 11:09:31 ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-09-25 11:10:18
карма: 6

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#28: 2017-09-25 12:11:34 ЛС | профиль | цитата
Tad писал(а):
так и не нашел, что у Кладова не работает

Я уже сейчас не вспомню точно, где у меня покоцало путь, но попробуй в середине использовать папку с расширением. Но помню точно, что старый код у меня не сработал и пришлось самому делать на рассыпухе, пока не поменял весь код компонента.

--- Добавлено в 2017-09-25 12:12:54

3042 писал(а):
Для отделения пути, имени и расширения - каждый отдельный компонент, что ли?

ЕМНИП, то такое уже было.

Редактировалось 1 раз(а), последний 2017-09-25 12:12:54
карма: 22

0
28
Сообщение
...
Прикрепленные файлы
(файлы не залиты)