Visa och organisera filer och mappar. Importera och exportera filer i olika format i Pages

Introduktion

I den här artikeln kommer jag att detaljera hur man associerar en anpassad applikation med en specifik filtyp. Så att när du dubbelklickar på en fil startar den här applikationen och öppnar den valda filen.

Det finns speciella komponenter och moduler för att associera filer med en applikation, som . I artikeln kommer jag att beskriva hur detta går till manuellt.

Hur fungerar det hela?

I allmänhet fungerar allt väldigt enkelt. All information som behövs för detta förs in i registret i en specifik filial. Öppna registerredigeraren (Start -> Kör -> regedit) och gå till grenen HKEY_CLASSES_ROOT. Där ser du alla tillägg som finns i systemet. Där hittar du både .txt och .bmp och många andra välbekanta tillägg.

Låt oss titta på tillägget .jpg. I den har jag en OpenWithProgids-gren, och den har en ACDSee Pro 2.0.jpg av typen REG_SZ. Gå sedan till grenen HKEY_CLASSES_ROOT\ACDSee Pro 2.0.jpg. Den har flera grenar. Låt oss överväga de som vi behöver, dessa är: DefaultIcon - sökvägen till ikonen som filen kommer att visas i Explorer; shell\Open\command - vilket program som ska öppnas när man dubbelklickar på en fil.

Du måste veta att när du startar programmet skickas sökvägen till filen som öppnas som en parameter. Därför måste denna parameter hanteras.

Genomförande

Låt filen vara filtillägg .dev. Låt oss skriva en procedur för att lägga till de nödvändiga värdena till registret. Glöm inte att lägga till till användningssektionen i Registry-modulen för att arbeta med registret.

använder Registry, ShlObj;
...
var Reg: TRegistry;
...
procedur associera;
var s: sträng;
Börja
Reg:=TRegistry.Create; // skapa
// ange rotgrenen

Reg.OpenKey(".dev\OpenWithProgids\" , true);
Reg.WriteString("TestApplication.dev" , "");

Reg.OpenKey( "\TestApplication.dev\DefaultIcon\", Sann);
s:=Application.ExeName+",0";
Reg.WriteString("", s);

Reg.OpenKey( "\TestApplication.dev\Shell\Open\", Sann);
Reg.WriteString("", "Öppna i TestApplication");

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

noll, noll);
slutet;

Fungera öppen nyckelöppnar grenen som anges i den första parametern. Den andra parametern är satt till True för att skapa grenen om den inte finns.

Därefter, i variabeln s, bildar vi sökvägen till ikonen. I det här fallet tas ikonen med index 0 från exe-applikationen. Du kan till exempel lägga till en annan ikon i programmet och använda den för programfiler, men du kan också ange sökvägen till .ico-filen.

Jag valde TestApplication.dev själv. Namnet på denna tråd är upp till dig. Vanligtvis skrivs programmets namn och tillägget läggs till, eftersom programmet kan fungera med flera tillägg.

Efter att ha lagt till data i registret anropas proceduren SHhangeNotify för att uppdatera ikonerna och tillämpa inställningarna.

procedur DeleteAssociate;
Börja
Reg:=TRegistry.Create;
Reg.RootKey:= HKEY_CLASSES_ROOT;

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

SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, noll, noll);
slutet;

Det är ännu enklare här - ta bara bort de skapade grenarna.

Lastbearbetning

Nu återstår bara att bearbeta parametern så att programmet inte bara laddar utan också öppnar filen. Allt är väldigt enkelt, under skapandet av formuläret läser vi funktionen ParamCount antalet parametrar och om deras antal inte är 0, då anropar vi laddningsfunktionen, och som en ingångsparameter till denna funktion skickar vi sökvägen till filen som ska öppnas. Klicka på formuläret två gånger och skapar därigenom en hanterare för att skapa formulär.

procedur TForm1.FormCreate(Avsändare: TObject);
Börja
om ParamCount<> 0 sedan Load(ParamStr(1));
slutet;

Tja, du måste också skriva en filuppladdningsfunktion. Lägg till TMemo i formuläret.

fungera Ladda (FName: sträng): booleskt;
Börja
Form1.Memo1.Lines.LoadFromFile(FName);
slutet;

Troligtvis kommer funktionen i din ansökan att vara mycket mer komplicerad med bearbetning för omöjligheten att öppna en fil och returnera resultatet av öppningen. I det här fallet gör jag inte det.

Lägg till två TB-knappar i formuläret. Genom att klicka på den första kommer associationen att utföras, och vid den andra kommer associationen att tas bort.

Vi dubbelklickar på den första knappen och tar proceduren till detta formulär.

procedur TForm1.Button1Click(Avsändare: TObject);
Börja
associera;
slutet;

Vi utför samma steg som beskrivits ovan, men för den andra knappen.

procedur TForm1.Button2Click(Avsändare: TObject);
Börja
DeleteAssociate;
slutet;

OK det är över nu. När du försöker öppna en .dev-fil bör Memo1 läsa in innehållet i filen.

Krav.
För att utföra stegen i den här artikeln måste du ha lokala administratörsrättigheter på datorn.
Artikeln är giltig för Windows 98/Me/2000/XP/Vista.

Information.
Första fallet.
Händer efter installation nytt program, vissa filer börjar öppnas i det här programmet. Hela livet ser du till exempel på film med hjälp av winamp och en dag bestämde de sig för att installera nya codecs, och installationen av dessa codecs inkluderade installation av en spelare Windows Media Classic. Och nu filerna med tillägget .avi, öppna i en ny spelare, men du vill titta med winamp så låt oss göra några mindre justeringar.

Andra fallet.
Efter avinstallation av programmet slutar vissa filer att öppnas. Detta händer om det inte finns något fast program bakom denna typ av fil. Därför måste du manuellt bestämma vilket program du behöver för att öppna den här typen av fil.

Tilldela en filtyp till ett program.
1. Högerklicka på filen;
2. Välj menyalternativet " Egenskaper";
3. I fönstret "Egenskaper", gå till " Allmän";
4. I punkt " Ansökan", kommer att visas med vilket program denna fil öppnas (i vårt fall är det " Windows Media Classic");
5. Tryck på knappen " Förändra";
6. I fönstret Programval, leta reda på och klicka på nödvändigt program(och våra fall är " winamp");
7. Markera rutan " Använd det valda programmet för alla filer av denna typ" om det inte är installerat;


8. Klicka på "OK"-knappen;

Nu filer med tillägg .avi, kommer att öppnas med winamp.

Ibland frågar nybörjare hur du kan göra att en fil alltid öppnas i ett visst program. Låt oss säga att du installerade en ny bildvisare, men när du dubbelklickar på bilden öppnar Windows den fortfarande i standardverktyg för att se bilder.

Varför händer detta och hur avgör Windows i allmänhet vilket program som ska öppna en viss fil med? Denna "förståelse" möjliggörs av den så kallade länkningen eller. I huvudsak är en filassociation inget annat än en filassociation med applikationsprogram enligt vissa specifika tecken, oftast i förlängningen.





Vissa program under installationen ändrar automatiskt filassociationen, gör lämpliga ändringar i registret och registrerar sig samtidigt i innehållsmeny Explorer, medan andra gör en sak eller gör inga ändringar alls. I det senare fallet kan du själv bilda föreningen.

I Windows 7 och 8, gå till Kontrollpanelen och hitta avsnittet "Standardprogram" där. I fönstret som öppnas ser du fyra objekt. Klicka på den första "Ange standardprogram". Efter en kort skanning systemverktyg visar en lista över användarprogram installerade på datorn.





Låt oss säga att du vill att PNG-filer alltid ska öppnas i . I den vänstra panelen, välj den här redigeraren med musen och klicka sedan på "Välj standardvärden för det här programmet." I fönstret som öppnas markerar du rutan för önskat tillägg, sparar resultatet och från och med nu öppnas alla bilder med PNG-tillägget, när du dubbelklickar på dem, i Paint.

Naturligtvis har denna metod vissa begränsningar. Poängen är att inte alla installerade program kan förekomma i den här listan. I det här fallet kan du gå från det motsatta, det vill säga att inte "anpassa" tillägget till programmet, utan vice versa.





I avsnittet för standardprogram, välj det andra alternativet "Associera filtyper eller protokoll med specifika program". Den här gången kommer verktyget att lista de mest använda tilläggen med kort beskrivning och relaterade applikationer. Vi agerar likadant. Låt oss föreställa oss en sådan situation.

Vår uppgift är att sätta upp associationer på ett sådant sätt att skriptfiler (.bat) kan ses i en normal textredigerare. Vi hittar BAT-tillägget, väljer det och klickar på knappen "Ändra program" i den övre delen av fönstret.





Ett fönster öppnas som ber dig välja önskad applikation, i Windows 8 kommer det första förslaget att vara att leta efter en app i butiken (okänt tillägg) eller fortsätta använda den associerade appen. Att se full lista applikationer, klicka på "Mer" och välj önskad applikation. Om den inte finns i listan kan du själv ange sökvägen till den körbara filen via standardwebbläsaren.

Slutsats

Genom att ställa in filassociationer kan du automatisera startuppgifter olika typer filer, vilket gör ditt arbete på din dator mer produktivt och snabbare.

Det finns andra sätt att ställa in filassociation. Till exempel kan avancerade användare göra lämpliga ändringar i systemregistret. Ovanstående metod är den enklaste och mest bekväma.

Förresten, du kan ställa in föreningar utan att använda kontrollpanelens verktyg. Du behöver bara högerklicka på den omtvistade filen, välja "Egenskaper" och i alternativfönstret som öppnas, ange vilket program du behöver för att öppna filen.

När du laddar ner filer från Internet markerar operativsystemet dem på ett speciellt sätt av säkerhetsskäl. Senare, när du försöker öppna den nedladdade filen, visar Windows en varning om att filen inte är säker och kräver uttrycklig bekräftelse på att du verkligen vill öppna den. När den är aktiverad smart funktion Skärm, vissa filer blockeras särskilt envist. Det finns ett sätt att ta bort sådana lås från alla filer och mappar som finns i katalogen "Nedladdningar" eller i någon annan mapp.
i själva låsmekanismen. Det fungerar med det välbekanta. För varje nedladdad fil läggs en alternativ dataström till, parametrarna där säger operativ system som den härrör från world wide web och kanske inte är säker.

För att verifiera detta kan vi i Windows 10 använda PowerShell-verktyget. Kör följande kommando för en av de nedladdade filerna:

Get-item filnamn -stream *

Det enklaste sättet att öppna PowerShell direkt i önskad mapp är att använda menykommandot Arkiv i Windows utforskaren 10. Gå till mappen Nedladdningar och kör Arkiv - Kör windows powershell- Starta Windows Powershell:


Kör kommandot ovan på filen "winaerotweaker.zip". Detta är ett arkiv med mitt eget Winaero Tweaker-program, som jag specifikt laddade ner som ett exempel. Vi kör kommandot:

Get-item winaerotweaker.zip -stream *


Argumentet "-stream *" talar om för kommandot get-item att lista alla tillgängliga strömmar för filen. Zone.Identifier - det här är exakt den alternativa dataströmmen genom vilken Windows 10 bestämmer filen som laddas ner från Internet. Genom att använda kommandot get-content kan vi se vad som skrivs till det:

Get-content winaerotweaker.zip -stream Zone.Identifier


I grunden är detta en vanlig ini-fil, där ZoneId-parametern har ett avgörande värde:

ZoneId=3

Dess möjliga värden är:
0 - Filen skapades på den lokala datorn.
1 - Fil mottagen via lokalt nätverk
2 - Filen togs emot från en betrodd internetzon
3 - Fil hämtad från Internet
4 - Filen togs emot från zonen "farliga platser".

Följaktligen, för att avblockera den, måste du antingen skriva 0 till ZoneId, eller till och med ta bort den alternativa strömmen som heter Zone.Identifier.

betyder att GUI du kan låsa upp filen genom dess egenskaper. Det finns en motsvarande kryssruta (som i den ryska versionen inte riktigt passar in i dialogrutan):

Hur man låser upp alla filer i mappen Nedladdningar på en gång i Windows 10

Om du behöver låsa upp många filer eller alla samtidigt är det en mycket tråkig uppgift att öppna egenskaperna för var och en av dem. Lyckligtvis kan denna operation förenklas igen med PowerShell. Det räcker med att utföra kommandot:

Dir -Recurse | Avblockera-fil

Det måste naturligtvis köras i rätt mapp. I vårt fall är PowerShell redan öppet i nedladdningsmappen. Låt oss köra det och se vad som händer.

Kommandot körs utan någon utmatning. Låt oss kolla alternativa dataströmmar:


Det vill säga, kommandot Unblock-File tar helt enkelt bort Zone.Identifier-strömmen från var och en av filerna:


Redo! Nu, när du behöver låsa upp flera filer samtidigt i valfri mapp på din dator, vet du vad du ska göra. Samma knep borde också fungera på Windows 8/8.1, men jag kan inte testa det för tillfället.

Filtypsdata allokeras till Pascal-språket, som används för att arbeta med information som finns på externa enheter. Denna information bildas i datorns externa minne och bildar ett visst område som kallas en fil. Filer har ett namn och är en samling element av samma typ. Vanligtvis används de i fall av stora datamängder, långtidslagring eller behov av att ge åtkomst till flera applikationer till samma information.

Filer delas vanligtvis in i fysiska och logiska. Fysiska filer har ett namn och finns på flyttbara media, medan logiska filer är de filtypsvariabler som representerar dem i programmet.

Pascal skiljer på följande tre typer av filer(nyckelord för filvariabelinitiering beskrivs inom parentes):

  • textfiler (text);
  • skrevs (fil av<тип>);
  • oskriven (fil).

Lite senare kommer vi att ta itu med var och en av dem. Och låt oss nu titta på de grundläggande operationerna för att arbeta med filer.

Skapande av filer

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

Tilldela-proceduren associerar en filtypsvariabel med en fysisk fil. Till exempel, för att upprätta en överensstämmelse mellan variabeln Fil och textfilen som finns på disk D, kan du göra så här:

Tilldela(Fil, 'D:\lot.txt')

Läsläge

återställa(<имя файловой переменной>)

Återställningsproceduren öppnar filen i läsläge, varefter läs(<файловая переменная>, <считываемый элемент>) kan du sekventiellt läsa in elementen i programmet.

Slutet på filen

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

Antalet element i en fil bestäms inte i förväg, men det är ofta nödvändigt att veta när slutet av filen nås. För att göra detta finns det en logisk funktion EOF i Pascal, som kontrollerar om slutet har nåtts, och i så fall tar den värdet True, annars False. Kontrollen utförs som regel i en cykel, EOF-funktionen fungerar som ett villkorligt uttryck.

Inspelningsläge

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

Efter att ha öppnat filen i skrivläge kan du skriva information till den element för element med proceduren Write (<файловая переменная>, <элемент>).

Stänger en fil

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

Stäng-proceduren stängs öppna fil, och släpper även filvariabeln som anges som en parameter.

Ta bort en fil

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

Med Erase-proceduren kan du radera en tidigare stängd fil från externa media.

Ändra filnamnet

Döp om(<имя файловой переменной>, ‘<новое имя файла>’)

Byt namn byter namn på en fysisk fil som först måste stängas med Stäng-proceduren.

Filpekarens offset

Söka(<имя файловой переменной>, <номер элемента>)

Sökproceduren ställer in pekarens position i filen till det önskade elementet (elementnumreringen börjar från noll).

Bestämma pekarens position

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

FilePos-funktionen tar ett värde serienummer elementet över vilket pekaren är placerad vid tidpunkten för samtalet.

Bestämma antalet element

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

Filstorleksfunktionen bestämmer antalet av alla element i en fil.

Textfiler

Textfiler kan bestå av element av en datatyp för tecken (char) och sträng (sträng). Nyckelord Text indikerar att filvariabeln är skapad för att fungera med en textfil:

Var<идентификатор>:text;

Strukturen i en textfil är en rad rader, som i sin tur består av tecken. Varje rad slutar med ett "slut på raden"-tecken, och själva filen slutar med ett "slut på filen"-tecken. För att bestämma slutet av en fil i Pascal finns en funktion EOF, och för slutet av en rad - EOLn:

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

Om slutet av strängen nås tar den (EOLn-funktionen) värdet True, annars False.

Exempel på uppgifter för att arbeta med filer i Pascal:

1.Skapa en fil X vars komponenter är element i arrayen M. Skriv om från fil X till fil Y alla komponenter som är på jämna platser. Läs fil Y.
M = (0,1; 5,6; 0,8; 2,4; 7,3; 6,8; 0,5; 2,3;)

const M: matris av reella = (0,1, 5,6, 0,8, 2,4, 7,3, 6,8, 0,5, 2,3);
var
x,y: fil av verklig;

n: verklig; i: byte;
Börja
tilldela(x,"x.dat");
tilldela(y,"y.dat");
rewrite(x);
för i:=1 till 8 do
skriv(x, M[i]);
close(x);
reset(x);
skriva om(y);
i:= 1;
medan inte EOF(x) börjar
läs(x, n);
om inte udda(i) då
skriv(y, n);
i:= i + 1;
slutet;
close(x); nära(y);
reset(y);
medan inte EOF(y) börjar
läs(y, n);
skriv(n:5:1);
slutet;
skrivln;
nära(y);
slutet.

2. En fil ges där naturliga tal skrivs genom ett mellanslag. Visa summan av siffrorna i varje nummer.

var
f: fil av röding;
c: kol; summa, n: ord;

Börja
assign(f,"nums.txt");
reset(f);
summa:= 0;
medan inte eof(f) börjar
läs(f,c);

om c<>" " börja sedan
val(c, n);
summa:= summa + n;
slutet
annars börja
skriv(summa:5);
summa:= 0
slutet;
slutet;

skrivln;
slutet.

3. En fil med studieschema ges. Skriv ett program som bestämmer antalet föreläsningar, praktik- och laborationer. Visa deras nummer på skärmen.

var
f:text;
s:sträng
i, lect, praxis, lab: byte;
Börja
tilldela(f,"lektioner.txt");
reset(f);
lect:= 0;
praktisk:= 0;
labb:=0;
medan inte Eof(f) börjar
readln(f,s);
i:= pos("föreläsning",s);
om jag<>0 sedan lect:= lect + 1
annars börja
i:= pos("praktiskt",s);
om jag<>0 sedan öva:= öva + 1
annars börja
i:= pos("lab",s);
om jag<>0 sedan lab:= lab + 1
slutet;
slutet;
slutet;
nära(f);
writeln("Föreläsningar: ", lekt);
writeln("Praktisk: ", öva);
writeln("Lab:", lab);
slutet.

4. Givet en textsträng bestående av stora latinska bokstäver. Det krävs att man hittar en delsträng med tre bokstäver som förekommer oftast i en given sträng. Till exempel, i strängen DEFDEFABCCABCZABCDEFDEF förekommer delsträngen DEF oftast (4 gånger). Inmatningsfilen innehåller en textsträng. Utdatafilen ska innehålla ett enda nummer - antalet förekomster av den vanligaste delsträngen med tre bokstäver. Längden på den ursprungliga strängen är från 3 till 1 000 000 tecken.

var
t1, t2: text;
n, i, j, k: heltal;
s, s1, s2: sträng;
Börja
Assign(t1, "D:\Users\User\Desktop\1.txt");
Assign(t2, "D:\Users\User\Desktop\2.txt");
reset(t1);
rewrite(t2);
läs(tl, s);
k:= 0;
för i:= 1 till längd(S) - 2 do
Börja
s1:= kopia(s, i, 3);
för j:= 1 till längd(er) - 2 do
Börja
s2:= kopia(s, j, 3);
om s2 = s1 så inc(k);;
slutet;
om k > n då n:= k;
k:= 0;
slutet;
skriv(t2, n);
nära(t1);
nära(t2);
slutet.

f: fil av röding;
fname:string;
ch: char;
n, rad, w: ord;
flagga: boolesk;
Börja
write("Filadress&namn: ");
readln(fname);
tilldela(f, fname);
reset(f);
n:=0; linje:= 0; w:= 0; flagga:= false;
medan inte EOF(f) börjar
läs(f, ch);
om ord(ch) = 13 så börja
läs(f, ch);
linje:= linje + 1;
flagga:= false;
slutet
annars börja
n:= n + 1;
om ch = " " flagga:= false
annan
om flagga = falskt så börja
w:= w+1;
flagga:=sant;
slutet;
slutet;
slutet;
ifn<>0 sedan linje:= linje + 1;
skrivln(n);
skrivlinje(linje);
writeln(w);
readln;
slutet.

var
f_in:text;
f_out:fil;
namn_in, namn_ut: sträng;
buffert: array av heltal;
i,k: heltal;
Börja
($I-)
write("Indatafil: ");readln(namn_i);
tilldela(f_in,name_in);
reset(f_in);
om IOResult<>0 starta sedan
writeln("Filen hittades inte!");
utgång
slutet;
write("Utdatafil: ");readln(namn_ut);
assign(f_out,name_out);
rewrite(f_out,sizeof(heltal)*8);
($I+)
i:= 0;
medan inte eof(f_in) börjar
inc(i);
read(f_in,buffert[i]);
om i = 8 så börja
blockwrite(f_out,buffert,1);
i:= 0
slutet;
slutet;
om jag<>0 starta sedan
för k:=i+1 till 8 gör buffert[k] := 0;
blockwrite(f_out,buffert,1);
slutet;
close(f_in);
close(f_out);
läsln
slutet.

7. In textfil innehåller information om antalet elever i klasser och deras klasslärare. Antalet klasser i skolan överstiger inte 20. En rad ges för att beskriva varje klass. De första fyra positionerna på varje rad i filen innehåller namnet på klassen (till exempel 5a, 10b) i klassen (skriv inte ryska bokstäver), och sedan antalet personer i den och namnet på ledaren. Programmet ger på begäran information om klassen eller ett meddelande om att klassen inte hittades.

konst n = 20;
typ
str4 = sträng;
clas = rekord
title:str4;
elever: byte;
lärare:sträng;
slutet;
var
skola: utbud av klasser;
i,j,len: heltal;
title_search:str4;
hittat: boolean;
f:text;
Börja
assign(f,"c:/school.txt"); reset(f);
i:= 1;
medan inte Eof(f) börjar
med skolan[jag] gör
readln(f,titel,elever,lärare);
i:= i + 1;
slutet;
medan sant börjar
write("Indataklass: ");
readln(titelsökning);
len:= length(titelsökning);
om len = 0 så bryt;
för j:= len + 1 till 4 do
title_search:= title_search + " ";
funnen:= falskt;
för j:= 1 till i - 1 börjar
om title_search<>school[j].title fortsätt sedan;
med skolan[j] gör
writeln(titel:5,elever:5,lärare:25);
funnen:=sant;
ha sönder;
slutet;
om inte hittas då
writeln("Ingen klass!");
slutet;
slutet.

8. Hitta alla givna teckensekvenser i strängen och ersätt dem med en annan sekvens.

var
s_out, s_in, str:string;
f:text;
i, len: heltal;
Börja
tilldela(f,"c:/text.txt");
reset(f);
writeln("Vilket snitt?");
readln(s_out);
writeln("Vilken pasta?");
readln(s_in);
len:= length(s_out);
medan inte Eof(f) börjar
readln(f,str);
i:= 1;
medan jag<>0 för att börja
i:= pos(s_out,str);
om jag<>0 starta sedan
delete(str, i, len);
infoga(s_in,str,i);
slutet;
slutet;
writeln(str);
slutet;
nära(f);
readln;
slutet.