Запрет некоторых символов в названии папки установки.

Silentman

Новичок
Приветствую. Подскажите, можно ли как-нибудь проверит наличие символов @^$% в названии папки установки (не во всём пути, а именно только в названии папки). Думал, думал, но в голову ничего не приходит.
 

Snoopak96

Старожил
Код:
[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp

[Code]
function NextButtonClick(CurPageID: Integer): Boolean;
var
i,j: integer;
s,c: string;
begin
Result := True;
if CurPageID = wpSelectDir then
begin
c := '@^$%';
for i:= Pos(ExtractFileName(WizardForm.DirEdit.text), WizardForm.DirEdit.text) + 1 to length(WizardForm.DirEdit.text) do
for j:=1 to length(c) do
begin
if WizardForm.DirEdit.text[i] = c[j] then
begin
s := 'В названии папки присутствует слово из 3-х букв, что не допустимо!'#13#13'Пожалуйста, повторите ввод.';
MsgBox(s, mbError, mb_Ok);
Result := False ;
exit;
end
else Result := True;
end;
end;
end;
 

Silentman

Новичок
А можно ли распространить это на путь установки без учёта буквы диска (чтоб проверка была только на каталог и подкаталоги, исключая имя диска)? (А то всё что нашёл, везде задействуется имя диска.)
 

Snoopak96

Старожил
всё можно, только думать самому когда-то придётся, наверно этот момент пришёл...
 

Snoopak96

Старожил
sergey3695,
лёгким движением руки брюки превращаются .... :D

Код:
function NextButtonClick(CurPageID: Integer): Boolean;
var
i,j: integer;
s,c: string;
begin
Result := True;
if CurPageID = wpSelectDir then
begin
c := '@^$%';
for i:= Pos(ExtractFileDrive(WizardForm.DirEdit.text), WizardForm.DirEdit.text) + 1 to length(WizardForm.DirEdit.text) do
for j:=1 to length(c) do
begin
if WizardForm.DirEdit.text[i] = c[j] then
begin
s := 'В названии папки присутствует слово из 3-х букв, что не допустимо!'#13#13'Пожалуйста, повторите ввод.';
MsgBox(s, mbError, mb_Ok);
Result := False ;
exit;
end
else Result := True;
end;
end;
end;
фукаксваминеинтересно
 

sergey3695

Ветеран
Модератор
не знал. спс.
а мне нужно извлечь весь путь, но без буквы диска (C:\)
ну а там что делается?
Код:
[Setup]
AppName=test
AppVersion=1.0
DefaultDirName={pf}\test
OutputDir=.

[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[Code]
function NextButtonClick(CurPageID: Integer): Boolean;
begin
if CurPageID = wpSelectDir then
  MsgBox(Copy(WizardForm.DirEdit.text,Pos(ExtractFileDrive(WizardForm.DirEdit.text), WizardForm.DirEdit.text) + 3, length(WizardForm.DirEdit.text)),mbInformation,mb_ok);
  Result:= true;
end;
ну не +1,а +3 тогда.
p.s. если только С, то
Код:
if Pos(ExpandConstant('{sd}'), WizardForm.DirEdit.text)<>0 then
  MsgBox(Copy(WizardForm.DirEdit.text,Pos(ExpandConstant('{sd}'), WizardForm.DirEdit.text) + 3, length(WizardForm.DirEdit.text)),mbInformation,mb_ok);
 
Последнее редактирование:

Snoopak96

Старожил
Я всегда думаю и ищу всевозможные решения сам, только если уж совсем нет никаких идей, то пишу сюда. Тем более всего знать невозможно. Я, может, и знаю некие нужные функции, но не всегда знаю как их правильно применить, поэтому и спрашиваю, ведь этот форум для этого и создан. Но раз я так напрягаю своей "некомпетентностью", то постараюсь здесь больше ничего не писать...
ответ был под носом, не надо ля-ля :music: если всё так воспринимать - можно вообще в инет не заходить xD
 
Сверху