Преглеждайте и организирайте файлове и папки. Импортирайте и експортирайте файлове с различни формати в Pages

Въведение

В тази статия ще опиша подробно как да асоциирате персонализирано приложение с конкретен тип файл. Така че, когато щракнете двукратно върху файл, това приложение стартира и отваря избрания файл.

Има специални компоненти и модули за асоцииране на файлове с приложение, като . В статията ще опиша как това става ръчно.

Как работи всичко?

Като цяло всичко работи много просто. Цялата необходима за това информация се въвежда в регистъра в конкретен клон. Отворете редактора на системния регистър (Старт -> Изпълнение -> regedit) и отидете до клона HKEY_CLASSES_ROOT. Там ще видите всички съществуващи разширения в системата. Там ще намерите както .txt, така и .bmp и много други познати разширения.

Нека разгледаме разширението .jpg. В него имам клон OpenWithProgids и той има ACDSee Pro 2.0.jpg от типа REG_SZ. След това отидете на клона HKEY_CLASSES_ROOT\ACDSee Pro 2.0.jpg. Има няколко клона. Нека разгледаме тези, от които се нуждаем, това са: DefaultIcon - пътят до иконата, на която файлът ще се показва в Explorer; shell\Open\command - коя програма да се отвори при двукратно щракване върху файл.

Трябва да знаете, че когато стартирате програмата, пътят до файла, който се отваря, се предава като параметър. Следователно този параметър ще трябва да бъде обработен.

Внедряване

Нека файлът е с разширения .dev. Нека напишем процедура за добавяне на необходимите стойности към регистъра. Не забравяйте да добавитекъм секцията за използване на модула Регистър, за да работите с регистъра.

използваРегистър, ShlObj;
...
вар Reg: TRegistry;
...
процедурасътрудник;
варс: низ;
започвам
Reg:=TRegistry.Create; // създавам
// посочете основния клон

Reg.OpenKey(".dev\OpenWithProgids\" , вярно);
Reg.WriteString("TestApplication.dev" , "");

Reg.OpenKey( "\TestApplication.dev\DefaultIcon\", вярно);
s:=Application.ExeName+",0";
Reg.WriteString("", s);

Reg.OpenKey( "\TestApplication.dev\Shell\Open\", вярно);
Reg.WriteString("", "Отвори в TestApplication");

Reg.OpenKey("command\" , true);
s:="""+Application.ExeName+"" "%1"";
Reg.WriteString("", s);

нула, нула);
край;

функция отворен ключотваря клона, посочен в първия параметър. Вторият параметър е зададен на True, за да създаде клона, ако не съществува.

След това в променливата s формираме пътя до иконата. В този случай иконата с индекс 0 е взета от exe приложението. Например, можете да добавите друга икона към приложението и да я използвате за програмни файлове, но можете също да посочите пътя до .ico файла.

Сам избрах TestApplication.dev. Името на тази тема зависи от вас. Обикновено се изписва името на програмата и се добавя разширението, тъй като програмата може да работи с няколко разширения.

След добавяне на данни в регистъра се извиква процедурата SHCangeNotifyза актуализиране на иконите и прилагане на настройките.

процедура DeleteAssociate;
започвам
Reg:=TRegistry.Create;
Reg.RootKey:= HKEY_CLASSES_ROOT;

Reg.DeleteKey(".dev");
reg.DeleteKey("TestApplication.dev");

SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, нула, нула);
край;

Тук е още по-лесно - просто изтрийте създадените клонове.

Обработка на товара

Сега остава само да обработим параметъра, така че програмата не само да зарежда, но и да отваря файла. Всичко е много просто, по време на създаването на формата четем функцията ParamCountброя на параметрите и ако техният брой не е 0, тогава извикваме функцията за зареждане, като като входен параметър на тази функция подаваме пътя до файла, който ще се отваря. Щракнете върху формуляра два пъти, като по този начин създадете манипулатор за създаване на формуляр.

процедура TForm1.FormCreate(Подател: TObject);
започвам
ако ParamCount<> 0 тогаваЗареждане (ParamStr(1));
край;

Е, вие също трябва да напишете функция за качване на файл. Добавете TMemo към формуляра.

функцияЗареждане (FName: низ): булево;
започвам
Form1.Memo1.Lines.LoadFromFile(FName);
край;

Най-вероятно във вашето приложение функцията ще бъде много по-сложна с обработка за невъзможност за отваряне на файл и връщане на резултата от отварянето. В този случай няма да го направя.

Добавете два TButton към формуляра. С щракване върху първия ще се извърши асоциацията, а с втория асоциацията ще бъде премахната.

Щракваме двукратно върху първия бутон и пренасяме процедурата в този формуляр.

процедура TForm1.Button1Click(Подател: TObject);
започвам
сътрудник;
край;

Извършваме същите стъпки, както е описано по-горе, но за втория бутон.

процедура TForm1.Button2Click(Подател: TObject);
започвам
DeleteAssociate;
край;

Добре, всичко свърши. Когато се опитате да отворите .dev файл, Memo1 трябва да зареди съдържанието на файла.

Изисквания.
За да изпълните стъпките в тази статия, трябва да имате права на локален администратор на компютъра.
Статията е валидна за Windows 98/Me/2000/XP/Vista.

Информация.
Първи случай.
Случва се след инсталация нова програма, някои файлове започват да се отварят в тази програма. Например цял живот гледате филми с помощта на winampи един ден решиха да инсталират нови кодеци, като инсталирането на тези кодеци включваше инсталирането на плейър Windows Media Classic. И сега файловете с разширение .avi, отворете в нов плейър, но искате да гледате чрез winampтака че нека направим някои малки корекции.

Втори случай.
След деинсталиране на програмата някои файлове изобщо спират да се отварят. Това се случва, ако зад този тип файл няма фиксирана програма. Следователно трябва ръчно да определите коя програма трябва да отворите този тип файл.

Задаване на тип файл на програма.
1. Щракнете с десния бутон върху файла;
2. Изберете елемента от менюто " Имоти";
3. В прозореца "Свойства" отидете на " Общ";
4. В ал. Приложение", ще се покаже с коя програма е отворен този файл (в нашия случай това е " Windows Media Classic");
5. Натиснете бутона " промяна";
6. В прозореца за избор на програма намерете и щракнете върху необходима програма(и нашите случаи са " winamp");
7. Поставете отметка в квадратчето " Използвайте избраната програма за всички файлове от този тип" ако не е инсталиран;


8. Натиснете бутона "OK";

Вече файлове с разширение .avi, ще се отвори с winamp.

Понякога начинаещите потребители питат как можете да направите файл винаги отворен в определена програма. Да приемем, че сте инсталирали нова програма за преглед на изображения, но когато щракнете двукратно върху снимката, Windows пак я отваря в стандартна помощна програмаза преглед на изображения.

Защо се случва това и как по принцип Windows определя с кое приложение да отвори определен файл? Това „разбиране“ става възможно чрез така нареченото свързване или. По същество файловата асоциация не е нищо повече от файлова асоциация с приложна програмапо някои специфични признаци, най-често чрез разширение.





Някои програми по време на инсталацията автоматично променят файловата асоциация, като правят съответните промени в регистъра и в същото време се регистрират в контекстно меню Explorer, докато други правят едно нещо или не правят никакви промени. В последния случай можете сами да създадете асоциацията.

В Windows 7 и 8 отидете в контролния панел и намерете там секцията „Програми по подразбиране“. В прозореца, който се отваря, ще видите четири елемента. Кликнете върху първото „Задаване на програми по подразбиране“. След кратко сканиране системна помощна програмаще покаже списък с потребителски приложения, инсталирани на компютъра.





Да приемем, че искате PNG файловете винаги да се отварят в . В левия панел изберете този редактор с мишката и след това щракнете върху „Избор на стойности по подразбиране за тази програма“. В прозореца, който се отваря, поставете отметка за желаното разширение, запазете резултата и оттук нататък всички изображения с разширение PNG, при двукратно щракване върху тях, ще се отварят в Paint.

Излишно е да казвам, че този метод има определени ограничения. Въпросът е, че не всички инсталирани програмиможе да се появи в този списък. В този случай можете да отидете от обратното, тоест да не „персонализирате“ разширението към програмата, а обратното.





В секцията с програми по подразбиране изберете втория елемент „Асоцииране на типове файлове или протоколи с конкретни програми“. Този път помощната програма ще изброи най-често използваните разширения с Кратко описаниеи свързани приложения. Ние действаме по подобен начин. Нека си представим такава ситуация.

Нашата задача е да настроим асоциации по такъв начин, че скрипт файловете (.bat) да могат да се разглеждат нормално текстов редактор. Намираме разширението BAT, избираме го и натискаме бутона „Промяна на програмата“ в горната част на прозореца.





Ще се отвори прозорец с молба да изберете желаното приложение, в Windows 8 първото предложение ще бъде да потърсите приложение в магазина (неразпознато разширение) или да продължите да използвате свързаното приложение. За разглеждане пълен списъкприложения, щракнете върху „Още“ и изберете желаното приложение. Ако не е в списъка, можете сами да посочите пътя до изпълнимия файл чрез стандартния браузър.

Заключение

Чрез настройване на файлови асоциации можете да автоматизирате задачите при стартиране различни видовефайлове, като по този начин прави работата ви на вашия компютър по-продуктивна и по-бърза.

Има и други начини за настройка на файлова асоциация. Например, напредналите потребители могат да направят подходящи промени в системен регистър. Горният метод е най-простият и удобен.

Между другото, можете да настроите асоциации, без да прибягвате до инструментите на контролния панел. Трябва само да щракнете с десния бутон върху оспорвания файл, да изберете „Свойства“ и в прозореца с опции, който се отваря, да посочите приложението, от което се нуждаете, за да отворите файла.

Когато изтегляте файлове от интернет, операционната система ги маркира по специален начин от съображения за сигурност. По-късно, когато се опитате да отворите изтегления файл, Windows показва предупреждение, че файлът не е безопасен и изисква изрично потвърждение, че наистина искате да го отворите. Когато е разрешено интелигентна функцияЕкран, някои файлове са блокирани особено упорито. Има начин да премахнете такива ключалки от всички файлове и папки, намиращи се в директорията "Изтегляния" или във всяка друга папка.
в самия заключващ механизъм. Работи с помощта на познатия . За всеки изтеглен файл се добавя алтернативен поток от данни, параметрите в който казват операционна системаче произлиза от световната мрежаи може да не е безопасно.

За да проверим това, в Windows 10 можем да използваме инструмента PowerShell. Изпълнете следната команда за един от изтеглените файлове:

Get-item filename -stream *

Най-лесният начин да отворите PowerShell веднага в желаната папка е да използвате командата от менюто File Windows Explorer 10. Отидете в папката Downloads и стартирайте File - Run windows powershell- Стартирайте Windows Powershell:


Изпълнете горната команда на файла "winaerotweaker.zip". Това е архив с моята собствена програма Winaero Tweaker, която специално изтеглих като пример. Изпълняваме командата:

Get-item winaerotweaker.zip -stream *


Аргументът "-stream *" казва на командата get-item да изброи всички налични потоци за файла. Zone.Identifier - точно това е алтернативният поток от данни, по който Windows 10 определя файла, изтеглен от интернет. Използвайки командата get-content, можем да видим какво е написано в нея:

Get-content winaerotweaker.zip -stream Zone.Identifier


В основата си това е обикновен ini файл, в който параметърът ZoneId има решаваща стойност:

ZoneId=3

Възможните му стойности са:
0 - Файлът е създаден на локалния компютър.
1 - Файл, получен през локална мрежа
2 - Файлът е получен от доверена интернет зона
3 - Файл, получен от интернет
4 - Файлът е получен от зона "опасни обекти".

Съответно, за да го деблокирате, трябва или да напишете 0 в ZoneId, или дори да изтриете алтернативния поток с име Zone.Identifier.

означава GUIможете да отключите файла чрез неговите свойства. Има съответно квадратче за отметка (което в руската версия не се вписва съвсем в диалоговия прозорец):

Как да отключите всички файлове в папката за изтегляния наведнъж в Windows 10

Ако трябва да отключите много файлове или всички наведнъж, отварянето на свойствата на всеки от тях е много досадна задача. За щастие тази операция може да бъде опростена отново с помощта на PowerShell. Достатъчно е да изпълните командата:

Dir -Recurse | Разблокиране на файл

Разбира се, трябва да се изпълни в правилната папка. В нашия случай PowerShell вече е отворен в папката Downloads. Нека го стартираме и да видим какво ще се случи.

Командата се изпълнява без никакъв изход. Нека проверим алтернативни потоци от данни:


Това означава, че командата Unblock-File просто премахва потока Zone.Identifier от всеки от файловете:


Готов! Сега, когато трябва да отключите няколко файла наведнъж в която и да е папка на вашия компютър, знаете какво да направите. Също така, същият трик трябва да работи на Windows 8/8.1, но не мога да го тествам в момента.

Данните от файлов тип се разпределят на езика Pascal, който се използва за работа с информация, намираща се на външни устройства. Тази информация се формира във външната памет на компютъра, образувайки определена област, наречена файл. Файловете имат име и са колекция от елементи от един и същи тип. Обикновено те се използват в случаи на големи количества данни, дългосрочно съхранение или необходимост от предоставяне на достъп на няколко приложения до една и съща информация.

Файловете обикновено се разделят на физически и логически. Физическите файлове имат име и се намират на преносими носители, докато логическите файлове са онези променливи от типа на файла, които ги представят в програмата.

Паскал прави разлика между следното три вида файлове(ключовите думи за инициализация на файлова променлива са описани в скоби):

  • текстови файлове (текст);
  • въведен (файл на<тип>);
  • нетипизиран (файл).

Малко по-късно ще се занимаваме с всеки от тях. А сега нека разгледаме основните операции за работа с файлове.

Създаване на файл

Присвояване (<имя файловой переменной>, <имя файла>)

Процедурата Assign асоциира променлива тип файл с физически файл. Например, за да установите съответствие между променливата Fil и партидата на текстовия файл, разположен на диск D, можете да направите следното:

Присвояване (Fil, 'D:\lot.txt')

Режим на четене

нулиране(<имя файловой переменной>)

Процедурата Reset отваря файла в режим на четене, след което Read(<файловая переменная>, <считываемый элемент>) можете последователно да четете елементите в програмата.

Край на файла

EOF(<имя файловой переменной>)

Броят на елементите във файла не се определя предварително, но често е необходимо да се знае кога е достигнат краят на файла. За целта в Pascal има логическа функция EOF, която проверява дали е достигнат краят и ако е така, приема стойност True, в противен случай False. Проверката се извършва, като правило, в цикъл, функцията EOF действа като условен израз.

Режим на запис

Нова редакция(<имя файловой переменной>)

След като отворите файла в режим на запис, можете да записвате информация в него елемент по елемент, като използвате процедурата Write (<файловая переменная>, <элемент>).

Затваряне на файл

Близо(<имя файловой переменной>)

Процедурата за затваряне се затваря отвори файл, а също така освобождава файловата променлива, посочена като параметър.

Изтриване на файл

Изтрива(<имя файловой переменной>)

С помощта на процедурата Erase можете да изтриете предварително затворен файл от външен носител.

Промяна на името на файла

Преименуване(<имя файловой переменной>, ‘<новое имя файла>’)

Преименуване преименува физически файл, който първо трябва да бъде затворен с процедурата Close.

Отместване на показалеца на файла

Търсене(<имя файловой переменной>, <номер элемента>)

Процедурата Seek задава позицията на указателя във файла към необходимия елемент (номерирането на елементите започва от нула).

Определяне на позицията на показалеца

FilePos(<имя файловой переменной>)

Функцията FilePos приема стойност сериен номерелементът, върху който се намира указателят по време на извикването.

Определяне на броя на елементите

Размер на файла(<имя файловой переменной>)

Функцията FileSize определя броя на всички елементи във файла.

Текстови файлове

Текстовите файлове могат да се състоят от елементи от символен (char) и низов (string) тип данни. Ключова думаТекстът показва, че файловата променлива е създадена за работа с текстов файл:

вар<идентификатор>:текст;

Структурата на текстов файл е поредица от редове, които от своя страна се състоят от знаци. Всеки ред завършва със знак „край на реда“, а самият файл завършва със знак „край на файла“. За определяне на края на файл в Pascal има функция EOF, а за края на ред - EOLn:

EOLn(<имя файловой переменной>)

Ако бъде достигнат краят на низа, той (функцията EOLn) приема стойност True, в противен случай False.

Примери за задачи за работа с файлове в Pascal:

1. Създайте файл X, чиито компоненти са елементи от масива M. Препишете от файл X във файл Y всички компоненти, които са на четни места. Прочетете файл Y.
M = (0,1; 5,6; 0,8; 2,4; 7,3; 6,8; 0,5; 2,3;)

const M: масив от реални = (0.1, 5.6, 0.8, 2.4, 7.3, 6.8, 0.5, 2.3);
вар
x,y: файл на real;

n: истински; i: байт;
започвам
присвояване (x, "x.dat");
присвояване (y, "y.dat");
пренаписване (x);
за i:=1 до 8 направи
запис(x, M[i]);
затваряне (x);
нулиране(x);
пренаписване (y);
i:= 1;
докато не започва EOF(x).
четене (x, n);
ако не нечетен (i), тогава
запис (y, n);
i:= i + 1;
край;
затваряне (x); затваряне (y);
нулиране (y);
докато не започва EOF(y).
четене (y, n);
запис (n: 5: 1);
край;
writeln;
затваряне (y);
край.

2. Даден е файл, в който през интервал са записани естествените числа. Покажете сумата от цифрите на всяко число.

вар
f: файл на char;
c: овъглено; сума, n: дума;

започвам
assign(f,"nums.txt");
нулиране (f);
сума:= 0;
докато не eof(f) започва
четене(f,c);

ако c<>" " тогава започнете
val(c, n);
сума:= сума + n;
край
иначе започнете
запис (сума: 5);
сума:= 0
край;
край;

writeln;
край.

3. Дава се файл с учебен график. Напишете програма, която определя броя на лекциите, практическите и лабораторните упражнения. Изведете номера им на екрана.

вар
f:текст;
s: низ
i, лекция, практика, лаборатория: байт;
започвам
assign(f,"lessons.txt");
нулиране (f);
lect:= 0;
практически:= 0;
лаборатория:=0;
докато не Eof(f) започват
readln(f,s);
i:= pos("лекция",s);
ако аз<>0 след това lect:= lect + 1
иначе започнете
i:= pos("практичен",s);
ако аз<>0 след това практика:= практика + 1
иначе започнете
i:= pos("lab",s);
ако аз<>0 след това lab:= lab + 1
край;
край;
край;
затваряне (f);
writeln("Лекции: ", лекция);
writeln("Практически: ", практика);
writeln("Лаборатория: ", лаборатория);
край.

4. Даден е текстов низ, състоящ се от главни латински букви. Изисква се да се намери подниз от три букви, който се среща най-често в даден низ. Например в низа DEFDEFABCCABCZABCDEFDEF поднизът DEF се среща най-често (4 пъти). Входният файл съдържа текстов низ. Изходният файл трябва да съдържа едно число - броят на срещанията на най-често срещания трибуквен подниз. Дължината на оригиналния низ е от 3 до 1 000 000 знака.

вар
t1, t2: текст;
n, i, j, k: цяло число;
s, s1, s2: низ;
започвам
Assign(t1, "D:\Users\User\Desktop\1.txt");
Assign(t2, "D:\Users\User\Desktop\2.txt");
нулиране (t1);
пренаписване (t2);
четене (t1, s);
k:= 0;
за i:= 1 до дължина(S) - 2 направи
започвам
s1:= копие(и, i, 3);
за j:= 1 до дължина(и) - 2 направи
започвам
s2:= копие(s, j, 3);
ако s2 = s1 тогава inc(k);;
край;
ако k > n тогава n:= k;
k:= 0;
край;
запис (t2, n);
затваряне (t1);
затваряне (t2);
край.

f: файл на char;
fname:низ;
ch: въглен;
n, линия, w: дума;
флаг: булев;
започвам
write("Адрес и име на файл: ");
readln(fname);
присвояване (f, fname);
нулиране (f);
n:=0; ред:= 0; w:= 0; флаг:= невярно;
докато не започва EOF(f).
четене (f, ch);
ако ord(ch) = 13 тогава започнете
четене (f, ch);
ред:= ред + 1;
флаг:= невярно;
край
иначе започнете
n:= n + 1;
if ch = " " тогава флаг:= невярно
друго
if flag = false тогава стартирайте
w:= w+1;
флаг:=вярно;
край;
край;
край;
ако<>0 след това ред:= ред + 1;
writeln(n);
напиши линия (ред);
writeln(w);
readln;
край.

вар
f_in:текст;
f_out:файл;
name_in, name_out: низ;
буфер: масив от цели числа;
i,k: цяло число;
започвам
($I-)
write("Входен файл: ");readln(name_in);
присвояване (f_in,name_in);
нулиране(f_in);
ако IOResult<>0 след това започнете
writeln("Файлът не е намерен!");
изход
край;
write("Изходен файл: ");readln(name_out);
присвояване(f_out,name_out);
rewrite(f_out,sizeof(integer)*8);
($I+)
i:= 0;
докато не eof(f_in) започва
вкл.(i);
четене (f_in, буфер [i]);
ако i = 8, тогава започнете
blockwrite(f_out,buffer,1);
i:= 0
край;
край;
ако аз<>0 след това започнете
за k:=i+1 до 8 направете буфер[k] := 0;
blockwrite(f_out,buffer,1);
край;
затваряне (f_in);
затваряне (излизане);
readln
край.

7. В текстов файлсъдържа информация за броя на учениците в паралелките и техните класни ръководители. Броят на паралелките в училището не надвишава 20. Всеки клас се описва с един ред. Първите четири позиции на всеки ред на файла съдържат името на класа (например 5a, 10b) на класа (не пишете руски букви), а след това броя на хората в него и името на лидера. Програмата при поискване предоставя информация за класа или съобщение, че класът не е намерен.

const n = 20;
Тип
str4 = низ;
клас = запис
заглавие:str4;
ученици: байт;
учител: низ;
край;
вар
училище: масив от класове;
i,j,len: цяло число;
търсене_заглавие:str4;
намерено: булево;
f:текст;
започвам
assign(f,"c:/school.txt"); нулиране (f);
i:= 1;
докато не Eof(f) започват
с училище [i] правя
readln(f,заглавие,ученици,учител);
i:= i + 1;
край;
докато истината започва
write("Въведен клас: ");
readln(търсене_заглавие);
len:= дължина (търсене_заглавие);
ако len = 0 тогава прекъсване;
за j:= len + 1 до 4 do
title_search:= title_search + " ";
намерено:= невярно;
за j:= 1 до i - 1 започвам
ако заглавие_търсене<>училище [j].title след това продължете;
с училище [j] правя
writeln(заглавие:5,ученици:5,учител:25);
намерени:=вярно;
прекъсване;
край;
ако не се намери тогава
writeln("Няма клас!");
край;
край.

8. Намерете всички дадени последователности от знаци в низа и ги заменете с друга последователност.

вар
s_out, s_in, str:string;
f:текст;
i, len: цяло число;
започвам
assign(f,"c:/text.txt");
нулиране (f);
writeln("Какъв разрез? ");
readln(s_out);
writeln("Каква паста?");
readln(s_in);
len:= дължина (s_out);
докато не Eof(f) започват
readln(f,str);
i:= 1;
докато аз<>0 за начало
i:= pos(s_out,str);
ако аз<>0 тогава започнете
изтриване (str, i, len);
вмъкване (s_in, str, i);
край;
край;
writeln(str);
край;
затваряне (f);
readln;
край.