Vb6 filsystem meny kod exempel. Flytta, kopiera och ta bort filer

8. SPARA OCH LÄSA INFORMATION

För att säkerställa att all data som skapats i minnet inte går förlorad efter att programmet är klart måste du kunna spara information på din hårddisk. Annars försvinner all information spårlöst. Data kan lagras och läsas på en mängd olika sätt. För att arbeta med information av olika storlekar och format kan du använda binära filer och textfiler. För att lagra små mängder information kan du använda Windows-registret. Och för de mest komplexa uppgifterna är det klokt att använda databaser.

8.1. Öppna filer med operatören "Öppen "

En fil är ett namngivet område på vilken extern lagringsenhet som helst. Data "lever" i datorns minne och filer live på hårddisken. Programmet fungerar inte med filer direkt, utan använder operativsystemet som mellanhand.

Det finns två typer av filnamn: full - förutom filnamnet anges också platsen för filen på externa media (till exempel "C:\Program Files\Microsoft Visual Studio\VB98\VB 6.EXE" ) och kort - endast filnamnet (VB 6.EXE ). Om filplatsen inte är angiven, kommer den att sökas i den aktuella mappen, som standard mappen där ditt program finns. Det omedelbara filnamnet består av två delar: det faktiska unika filnamnet och dess tillägg. Namnet i sig identifierar filen, och tillägget anger vanligtvis filformatet eller vilket program den skapades av.

Innan du börjar arbeta med filen måste du fråga operativsystemet pekare (deskriptor) fil. För att få det, använd "FreeFile"-funktionen. Sedan, med hjälp av "Öppna"-operatorn, kopplas denna pekare till den önskade filen. Först efter detta kommer programmet att kunna arbeta med det. Syntaxen för att öppna en fil är följande:

'skaffa en gratis filpekare och tilldela den till en variabel

FileHandle% = FreeFile

"öppna filen

Öppna FilePath_

Som [#]FileHandle%

...(arbetar med en fil)

Stäng [#]FileHandle

· FileHandle % – en variabel som lagrar filpekaren;

· FreeFile – namnet på funktionen som returnerar filpekaren;

· Öppna – operatörens namn;

· FilePath – fullständigt filnamn;

· För – ett nyckelord följt av en beskrivning av filåtkomstläget;

· Läge – filåtkomstläge (se Tabell 15);

Tabell 15

Filåtkomstlägen

Åtkomstlägen

Beskrivning

Bifoga

Lägga till data i slutet av en befintlig textfil. Om filen inte finns skapas den

Binär

Att öppna en fil i binärt läge, dvs. som en uppsättning byte. Om filen inte finns men kommer att skapas

Inmatning

Öppna en fil för läsning i textformat

Produktion

Öppna en fil för att skriva en textfil. I det här fallet kommer all gammal information att raderas. Om filen inte finns men kommer att skapas

Slumpmässig

Öppnar en fil i slumpmässigt åtkomstläge. Detta läge används för att arbeta med enkla poster. Om filen inte finns men kommer att skapas

· Access – ett valfritt nyckelord följt av en beskrivning av åtkomsttypen;

· AccessType – beskrivning av åtkomsttypen:

· Läsa – läsa;

· Skriva – spela in;

· Läs Skriv – läsa och skriva.

Notera

Med åtkomstlägena Lägg till och Utdata är endast skrivåtkomsttypen tillgänglig, med endast ingång Läs, och med binär och slumpmässig är alla tre åtkomsttyper tillgängliga.

· LockType är en valfri parameter som avgör om andra program kan använda den här filen medan ditt program arbetar med den. Det är vanligtvis förknippat med att arbeta på nätverket (se tabell 16).

Tabell 16

Möjliga värden för LockType-parametern

Menande

Beskrivning

Delad

Alla användare med nödvändiga rättigheter kommer att ha full åtkomst till filen

Lås Läs

Läsning av filen är blockerad, men skrivning är tillåten

Lås Skriv

Skrivning till filen är blockerad, men läsning är tillåten

Lås Läs Skriv

Det är förbjudet att både läsa och skriva till den

· Som är ett nyckelord följt av en filpekare.

· # är en symbol som indikerar att värdet efter det är en filpekare.

· Len är ett valfritt nyckelord som måste följas av en parameter som anger längden på posten.

· CharInBuffer % - postlängd för en fil som öppnas i slumpmässigt åtkomstläge (Random).

· Close är en sats som stänger filen som är associerad med det angivna handtaget.

Det är viktigt att stänga en fil när du är klar med att arbeta med den. "Close"-satsen frigör filpekaren och det tillhörande minnesområdet.

När du arbetar med en fil, nämligen när du läser från den, är det mycket viktigt att bestämma slutet av filen. Det kan definieras med funktionen EOF (End Of File):

EOF(FileHandle)

· EOF – funktionsnamn;

· FileHandle är en pekare till filen vars slut bestäms.

Funktionen returnerar True om slutet av filen nås, annars returnerar False.

8.2. Läsa och skriva till en textfil

Textfilen öppnas i åtkomstläget "Input", "Output" eller "Append" (se tabell 15). Det speciella med detta läge är att det bara fungerar med specifika utskrivbara tecken. Det är värdelöst att arbeta med servicesymboler.

För att spela in information, använd två operatorer "Skriv ut" och "Skriv", vars syntax är följande:

Skriv ut #FileHandle%, VarBuffer [;]

Skriv #FileHandle%, VarBuffer [;]

· Skriv ut/skriv – nyckelord för operatör.

· #FileHandle % - pekare till filen som informationen ska placeras i.

· VarBuffer – värdet som kommer att skrivas till filen.

· ; – en valfri parameter som används när man skriver till en textfil, betyder att nästa värde kommer att skrivas till samma rad, och om det saknas, till nästa.

För att läsa information från en fil, använd operatorerna "Input" och "Line Input". Syntaxen liknar varandra:

Linjeingång #FileHandle%, VarBuffer

Ingång #FileHandle%, VarBuffer

· Line Input / Input – operator nyckelord.

· #FileHandle % - pekare till filen från vilken information kommer att läsas.

· VarBuffer – en variabel som information kommer att läsas in i.

Skillnaden mellan "Line Input" och "Input" -operatorerna är att den första endast är avsedd för textfiler och den andra - för alla. När det gäller textfiler läser "Input" data på en rad upp till den första avgränsaren (för textdata är avgränsaren "," (komma), och för numeriska data - "" (mellanslag) och ",") , och "Linjeinmatning" läser hela raden på en gång och ignorerar eventuella avgränsare.

Notera

I Visual Basic det finns inga sätt att styra formatet på tidigare skapade filer. Därför kan symbolen "2" läsas som motsvarande nummer och vice versa.

8.3. Arbeta med binära filer

Filer öppnas i binärt format operatören "Öppna" i "Binärt" läge. En utmärkande egenskap för detta läge är att arbetet med filen är fokuserat uteslutande på specifika bytes. Eftersom Visual Basic direkt kan adressera den önskade platsen i en fil, kallas detta läge även − direktåtkomstläge. En annan funktion i detta läge är möjligheten att samtidigt skriva och läsa information i olika delar av filen utan att öppna den igen. Att skriva till en fil som öppnats i binärt läge görs med följande syntax:

Lägg #FileHandle%, , NameVar

· Put – namnet på informationsregistreringsoperatören.

· RecNumber – bytenumret på filen som informationen kommer att skrivas in i (valfri parameter).

· NameVar är en variabel vars innehåll kommer att skrivas till filen.

Att läsa information från en fil i binärt läge görs med följande operator:

Få #FileHandle%, , NameVar

· Get – namnet på informationsregistreringsoperatören.

· FileHandle % - filhandtag.

· RecNumber – bytenummer för filen från vilken information kommer att läsas (valfri parameter).

· NameVar – namnet på variabeln som den lästa informationen kommer att placeras i.

Eftersom det binära läget är fokuserat på bytes med information, måste buffertvariabeln vid läsning från en fil ha en strikt definierad typ: antingen "Byte", då kommer bytens numeriska värde att läsas, eller ett tecken med en fast längd på ett tecken, så läses byten som ett tecken, ANSI , vars kod motsvarar bytestorleken. Detta tecken kan till och med vara ett kontrolltecken, vilket inte kan uppnås i fallet med textfiler.

Notera

I avsaknad av parametern "RecNumber" kommer skrivning eller läsning av information att ske i nästa byte av filen efter den som den tidigare arbetade med.

8.4. Grafikmanipulation

Du kan också spara och extrahera grafiska bilder från filer. För att extrahera en bild från en bitmapps- eller ikonfil och tilldela den till egenskapen "Picture" för kontrollerna "PictureBox" och "Image", använd funktionen "LoadPicture()" med följande syntax:

ImageCtrl.Picture = LoadPicture(FilePath)

· ImageCtrl – namnet på en bildfönsterkontroll, bildkontroll eller form;

· LoadPicture – funktionsnamn;

· FilePath – fullständigt filnamn.

SavePicture ImageCtrl .Picture, FilePath

· SavePicture – operatörens namn;

· ImageCtrl – namnet på en bildfönsterkontroll, bildkontroll eller form;

· Bild – namnet på objektegenskapen som är ansvarig för bilden;

· FilePath – det fullständiga namnet på filen som anger dess plats på disken.

8.5. Arbeta med data i registret

Windows-registret kan användas för att lagra små bitar av information i teckenformat. Visual Basic har fyra procedurer som du kan använda för att komma åt den. De är mycket enkla att använda, men har en huvudnackdel: du kan bara komma åt data från en specifik registernyckel: "MyComputer\HKEY_CURRENT_USER\Software\VB and VBA Program Settings". För att komma åt andra delar av registret måste du använda specialfunktionerna "Win ​​32 API".

För att få värdet av en inställning från Visual Basic-delen av Windows-registret måste du använda följande funktion:

MyString = GetSetting(VBKeyName, Section, Key [,Default])

· MyString – en sträng för att lagra värdet som returneras av funktionen;

· GetSetting – funktionsnamn.

· VBKeyName är ett strängvärde som är namnet på den interna VB/VBA-undernyckeln.

· Nyckel är ett strängvärde som representerar namnet på parametern i avsnittet.

· Default – ett valfritt argument, vars värde kommer att returneras vid ett fel (parameter saknas).

För att lagra ett värde i Windows-registret, använd följande uttalande:

SaveSetting VBKeyName, Section, Key, MyString

· SaveSetting – operatörens namn.

· MyString är en strängvariabel som det hittade värdet kommer att placeras i.

För att få en array från registret som innehåller alla parametervärden från en specifik undernyckel, använd följande funktion:

MyVariant = SetAllSettings(VBKeyName, Section)

· MyVariant är en uppsättning värden av typen "Variant" som returneras av funktionen.

· SetAllSettings – funktionsnamn.

· Sektion – Ett strängvärde som representerar ett avsnitt eller underavsnitt av en viss applikation.

För att ta bort en hel del av parametrar, använd en sats med följande syntax:

DeleteSetting VBKeyName, Section, Key

· DeleteSetting – operatörens namn.

Testfrågor för självtest

  1. Hur kan du lagra viss information långsiktigt?
  2. Vad är en fil?
  3. Vilka filnamn känner du till?
  4. Ange syntaxen för operatorn "Öppna". Förklara syftet med dess parametrar.
  5. Hur kan flera applikationer dela åtkomst till en fil samtidigt?
  6. Hur avgör man att informationen i en fil är uttömd?
  7. Varför rekommenderas det att stänga den efter att ha arbetat med en fil?
  8. Vad ser du som skillnaden mellan text- och binära fillägen?
  9. Hur läses och skrivs data i textfilläge?
  10. Hur läses och skrivs data i binärt filläge?
  11. Vad är skillnaden mellan "Skriv ut" och "Skriv" operatorerna när du arbetar med filer?
  12. Vad är skillnaden mellan operatorerna "Input" och "Line Input" när du arbetar med filer?
  13. Hur kan du arbeta med grafisk data?
  14. Vilka är de grundläggande principerna för att arbeta med Windows-registret?

Varje program måste spara data till disk och läsa den från disk. Detta är nödvändigt, till exempel för att spara programinställningar, användaren kommer sannolikt inte att gilla programmet, som måste konfigureras igen nästa gång det startas.

I den här artikeln kommer vi att prata om att arbeta med textfiler med Visual Basic.

Filbeskrivning

Att arbeta med filer operativ system använder I/O-kanaler, dvs. varje öppna fil har ett eget nummer.

I Visual Basic finns en funktion FreeFile, som returnerar numret på en ledig kanal som kan användas för att arbeta med filen. Om det inte finns några lediga kanaler uppstår ett fel.

FreeFile[(RangeNumber) ]

RangeNumber-valfri parameter som låter dig definiera värdeintervallet för gratiskanaler om RangeNumber= 0 (standard), då returneras kanalnumret från intervallet 1 - 255, och om 1, sedan från intervallet 256 - 511.

MyFile = FreeFile "MyFile-variabeln är tilldelad gratis kanal och nu kan den användas för att arbeta med filer

Arbeta med textfiler

Oftast stöter man på textfiler. Textfiler består av teckenuppsättningen ASCII (American Standard Code for Information Interchange).

Innan du börjar skriva/läsa data måste filen öppnas, detta görs med operatorn Öppen (Filnamn) För Som #Filnummer, Var:

Inmatning- öppna filen för läsning, om filen inte finns uppstår ett fel;

Produktion- för att skriva, om filen inte finns, kommer den att skapas, och om filen finns kommer den att skrivas över;

Bifoga- för att lägga till, om filen inte finns skapas den, och om filen finns kommer data att läggas till i slutet av filen.

Att läsa textfiler kan göras på två sätt: läs tecken för tecken, för detta använd funktionen Inmatning(Antal_lästa_tecken, #Filnummer) och rad för rad används funktionen för detta Linjeingång #Filnummer, Var_ att läsa.

Dimma MyFile

Dim S As String "Variabel för att lagra läst data

MyFile = FreeFile

Öppna("C:\TEST.txt") för inmatning som #MinFil

Linjeingång #MyFile, S "Läs den första raden från filen TEST.TXT till variabeln S

Dimma MyFile "Deklarera en variabel för en gratis fil

Dim i As Integer "Variabel för loop

Dim tS As String "Variabel för att läsa strängar

Dim S As String "Variabel för att lagra slutlig data

MyFile = FreeFile "Tilldela en gratis kanal för att arbeta med filer

"Öppna filen TEST.TXT för läsning

För i = 1 till 5

Linjeingång #MyFile, tS "Läser filen TEST.TXT rad för rad

Om i => 5 så är S = tS "Om den femte raden, lagra den i variabeln S

Nästa i

Stäng #MyFile "Stäng filen

Dim MyFile "Deklarera en variabel för en gratis fil

Dim S As String "Variabel för lagring av läst data

MyFile = FreeFile "Tilldela en gratis kanal för att arbeta med filer

Öppna("C:\TEST.txt") för inmatning som #MinFil "Öppna filen TEST.TXT för läsning

S = Input$(LOG(1), 1) "Läs hela filen i variabeln S

Stäng #MyFile "Stäng filen

Det finns operatorer för att skriva till en fil Skriva ut#Filnummer, Data Och Skriv #Filnummer, Data. Den enda skillnaden mellan dessa operatörer är att Skriva skriver data inom citattecken, och Skriva ut utan citat.

Följande kod skapar en ny fil TEST.TXT på C:\-enheten och skriver två rader till den, den första utan citattecken och den andra med citattecken:

Dimma MyFile "Deklarera en variabel för en gratis fil

MyFile = FreeFile "Tilldela en gratis kanal för att arbeta med filer

Öppna("C:\TEST.txt") för utdata som #MyFile "Öppna filen TEST.TXT för skrivning

Skriv ut #MyFile, "Denna rad skrevs av Print-operatören, den är utan citattecken..."

Skriv #MyFile, "Denna rad skrevs av Write-operatorn, den står inom citattecken..."

Stäng #MyFile "Stäng filen

Det är allt. Som du säkert redan förstått används operatören för att stänga en fil Stänga #Filnummer, vart i, # Filnummer det är inte nödvändigt att ange.

Artikeln är lite grov, men den kommer att vara användbar för nybörjare. Nästa gång ska jag prata om att arbeta med binära filer.

Windows

Målet med arbetet: Att lära sig och använda VB 6-språkoperatörer för att arbeta med filer olika typer: sekventiella (text)filer, slumpmässiga filer, binära filer. Forskning och användning av verktyget AllmänningDialog för att öppna och spara filer, välja teckensnitt och färg och använda objektet Urklipp för att lagra textfragment, med hjälp av exemplet att skapa en enkel textredigerare.

Kontrollfrågor:

1. På vilka sätt kan du öppna en textfil? Hur stänger man en text eller någon annan öppen fil?

2. Hur skrivs data till en textfil som är öppen för skrivning? Vad är skillnaden mellan skriv- och skrivutlåtandena?

3. Hur data läses från öppen för läsning textfil? Hur skiljer sig operatorerna Input och Line Input från varandra? Vilken funktion kan användas för att läsa ett visst antal tecken från en fil? Hur läser man alla tecken i en fil?

4. Vad är en användardatatyp och hur används detta koncept när man arbetar med filer med direktåtkomst ( raf)?

5. Använd vilka operatorer från filen raf poster läses också in i filen raf Skrivs nya inlägg?

6. För vilket syfte bestäms och används indexet när man arbetar med en fil? raf?

7. Vad är funktionerna för att använda binära filer? Hur öppnar de? Hur går det till att läsa från en binär fil och skriva till en binär fil?

8. Hur man använder kontrollen AllmänningDialog för att ladda innehållet i en textfil i ett textfält? Hur kan jag använda samma kontroll för att spara den redigerade texten till en textfil?

9. Hur man använder kontrollen AllmänningDialog för att ladda ner filinnehållet rtf i fält RikTextruta? Hur man använder samma kontroll för att spara redigerad text till en fil rtf?

10. Hur man använder kontrollen AllmänningDialog för att ändra teckensnittsparametervärdena och för att ändra textfärgen i fönstret Textruta(eller en markerad textbit i fönstret RikTextruta)?

Exempel 7.1. Överväg en applikation som visar att du skriver till en textfil (och läser från en textfil) "anställd information" - rader, som var och en innehåller identifikationsnummer, fullständigt namn, födelsedatum och födelseort för den anställde. Raderna bildar en tabell, som på skärmformen kommer att imiteras av 4 Combo Box-kontroller (Fig. 7.1), som bildar en array av Comb(i)-objekt, vars Style-egenskap har värdet 1 – SimpleCombo.

Välj raden som ska raderas", vbUtrop

Comb(j). Ta bort objekt i

'Föra in ny ingång till bordet:

Privat sub mnuInsert_Click()

i% = Comb(0).ListIndex

Om jag< 0 Then

MsgBox "Markera raden som ska infogas före den", vbUtrop

Comb(0).AddItem InputBox("Ange nummer"), dvs

Comb(1).AddItem InputBox("Ange ditt namn"), dvs

Comb(2).AddItem InputBox("Ange din födelsedag."), dvs

Comb(3).AddItem InputBox("Ange födelseort."), dvs

' Ändra en tabellpost:

Privat sub mnuUpdate_Click()

i% = Comb(0).ListIndex

Om jag< 0 Then

MsgBox "Höjd föränderlig sträng", vbUtrop

Comb(0).List(i) = InputBox("Ange nummer", Comb(0).List(i))

Comb(1).List(i) = InputBox("Ange ditt namn", Comb(1).List(i))

Comb(2).List(i) = InputBox("Ange din födelsedag.", Comb(2).List(i))

Comb(3).List(i) = InputBox("Ange födelseort.", Comb(3).List(i))

' Rensa hela bordet:

Privat sub mnuClear_Click()

' Fylla en tabell med information från en textfil:

Privat sub mnuLoad_Click()

Öppna "person. txt" för inmatning som #1

Ingång #1, numb, fio, bdate, block

Comb(0). AddItem numb

Comb(1). AddItem fio

Comb(2). AddItem bdate

Comb(3). AddItem block

' Skriva tabellinformation till en textfil:

Privat sub mnuSave_Click()

N% = Comb(0).ListCount

Öppna "person. txt" för utdata som #1

För i = 0 till N - 1

numb = Val(Comb(0).List(i))

fio = Comb(1). List(i)

bdate = CDate(Comb(2).List(i))

block = Comb(3). List(i)

Skriv #1, numb, fio, bdate, block

"Stänger av programmet:

Privat sub mnuExit_Click()

Exempel 7.2 . Överväg ett program som visar användningen av kontroller AllmänningDialog för att öppna och spara en fil, för att välja ett teckensnitt och färg och för att redigera text.

Filformat Text kommer att laddas i textfältet (vänster fält i Fig. 7.2) och filformatet RTF- i fält RikTextruta(högermarginal i fig. 7.2).

objekt

Klass

objekt

Fast egendom

objekt

Fastighetsvärde

”Allmänna paneler

dialog"

Öppna/spara som flik

Fliken Teckensnitt

Färgfliken

Tabellen visar inte egenskaperna för menykommandon Font, Färg Och Redigera. Nedan finns procedurkoden också endast för menykommandon Fil (Öppen, Spara Och SparaSom). Att komponera kod för andra menykommandon är ämnet för den andra uppgiften i detta arbete.

Privat sub mnuOpen_Click()

CommonDialog1.ShowOpen

F$ = CommonDialog1.FileName

Om Höger(F, 3) = "rtf" Då

RichTextBox1.LoadFile F

ElseIf Right(F, 3) = "txt" Då

Öppna F för inmatning som #1

S$ = Indata(N, 1)

Privat sub mnuSave_Click()

CommonDialog1.ShowSave

F$ = CommonDialog1.FileName

Privat sub mnuSaveAs_Click()

CommonDialog1.ShowSave

F$ = CommonDialog1.FileName

RichTextBox1.SaveFile F, rtfRTF

Under detta arbete ska eleven utföra 2 uppgifter.

Övning 1. I processen att slutföra uppgiften behärskar eleverna de möjligheter som finns i VB 6 för att arbeta med filer med direktåtkomst ( RAFslumpmässigtillgångfil).

För en given databastabell deklareras en användardatatyp, en variabel av denna typ deklareras (tutorial, s. 108–112), procedurer som använder en användartypsvariabel kompileras och felsöks.

I synnerhet implementeras procedurer för menykommandon Skriv till filRAF Och Läs från filRAF. Som i exempel 7.1 används en array av objekt för att redigera data ComboLåda och meny Redigera med fem undermenykommandon: Lägg till en anteckning, Ta bort inlägg, Infoga post, Redigera post, Tydligt bord.

Alternativ 1.

Deklarera en anpassad datatyp för tabellen "Bil" (tabell 7.1) i databasen "Bilservice".

bil

bil

funktionsfel

Den nedersta raden i Tabell 7.1 visar fälttyper.

Alternativ 2.

Ange en anpassad datatyp för tabellen "Fel" (tabell 7.2) i databasen "Bilservice".

funktionsfel

namn

funktionsfel

Pris

Den nedersta raden i Tabell 7.2 visar fälttyper.

Använd exempelapplikation 7.1 som en mall, organisera inmatning och redigering av data för tabellen som visas, skriv dessa data till en direktåtkomstfil och läs data från en direktåtkomstfil. Som i exempel 7.1, implementeras dessa åtgärder som operationen av menykommandon som visas i Fig. 7.1.

Uppgift 2. Under uppdraget lägger eleverna till nya funktioner i exempelapplikation 2 som gör att applikationen kan ses som en enkel textredigerare.

Alternativ 1 AllmänningDialog implementera menykommandon Font Och Färg(med undermeny Karaktärsfärg Och Bakgrundsfärg). Med dessa kommandon bör du kunna välja ett teckensnitt (dess namn, stil och storlek) för det valda textfragmentet i fönstret RikTextruta, samt att välja färgen på tecknen i det valda fragmentet och välja bakgrundsfärgen för hela fönstret.

Notera: När du sätter upp ett objekt AllmänningDialog För att välja ett teckensnitt med egenskapen (Custom), se till att ställa in värdet för Flags-egenskapen till 1, 2 eller 3 (se manualen, sidan 183).

Alternativ 2. Använda en kontroll AllmänningDialog implementera menykommandon Redigera(undermeny Kopiera, Skära Och Klistra), vars syfte är kopiering eller radering till klippbordet för det valda textfragmentet, och även Föra in till det valda textområdet i innehållet i urklipp.

Notera: Till klippbordet (objekt Urklipp) kan du använda metoderna SetText och GetText:

Urklipp. SetText RichTextBox1.SelText

RichTextBox1.SelText = Urklipp. GetText