Vb6 filsystem meny driftkod exempel. Arbeta med textfiler

8. SPARA OCH LÄSA INFORMATION

Så att efter att programmet är klart går inte all data som skapats i minnet förlorad, du måste kunna spara information på din hårddisk. Annars försvinner all information spårlöst. Du kan spara och läsa data på olika sätt. Binära och textfiler kan användas för att arbeta med information i olika storlekar och format. Du kan använda Windows -registret för att lagra små mängder information. Och för de mest komplexa uppgifterna är det vettigt att använda databaser.

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

En fil är ett namngivet område på en extern lagringsenhet. Data finns i datorns minne och filerna finns på hårddisken. Programmet fungerar inte direkt med filer utan använder operativsystemet som mellanhand.

Det finns två typer av filnamn: full - förutom filnamnet anges även platsen för filen på det externa mediet (till exempel "C: \ Program Files \ Microsoft Visual Studio \ VB98 \ VB 6.EXE ") och kort - bara filnamnet (VB 6.EXE). Om filens plats inte är angiven, söks den efter i den aktuella mappen som standard - mappen där din applikation finns. Det direkta filnamnet består av två delar: det faktiska unika filnamnet och dess tillägg. Själva namnet identifierar filen och tillägget anger vanligtvis filens format 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 funktionen "FreeFile". Med hjälp av "Öppna" -uttalandet associeras den här pekaren med den önskade filen. Först efter det 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 en filpekare;

· Öppet - operatörsnamn;

· FilePath är filens fullständiga namn;

· 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ägg till data i slutet av en befintlig textfil. Om filen inte finns skapas den

Binär

Öppna en fil i binärt läge, d.v.s. som en uppsättning byte. Om filen inte finns men skapas

Inmatning

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

Produktion

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

Slumpmässig

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

· Åtkomst är ett valfritt nyckelord följt av en beskrivning av typen av åtkomst;

· AccessType - beskrivning av åtkomsttypen:

· Läsa - läsa;

· Skriv - skriv;

· Läs Skriv - läs och skriv.

Notera

Med åtkomst- och utmatningslägen är endast skrivåtkomsttypen tillgänglig, med ingångsåtkomstlägen, endast läsåtkomst och med binära och slumpmässiga åtkomstlägen ä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 associerat med nätverk (se tabell 16).

Tabell 16

Möjliga värden för parametern LockType

Menande

Beskrivning

Delad

Alla användare med nödvändiga rättigheter har full tillgång till filen.

Lås Läs

Filläsning ä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

Både att läsa och skriva till den är förbjudet.

· Liksom ett nyckelord följt av en filpekare.

· # Är ett tecken som indikerar att värdet efter det är en filpekare.

· Len är ett valfritt sökord följt av en parameter som specificerar postens längd.

· CharInBuffer% - inspelningslängd för filen som öppnas i slumpmässigt åtkomstläge (slumpmässigt).

· Stäng är påståendet som stänger filen som är associerad med det angivna handtaget.

Det är viktigt att stänga filen när du har arbetat med den. Påståendet "Stäng" släpper filpekaren och dess tillhörande minnesområde.

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 bestämmas med hjälp av funktionen EOF (End Of File):

EOF (FileHandle)

· EOF - funktionsnamn;

· FileHandle är filpekaren att ange slutet på.

Funktionen returnerar True om slutet på filen har nåtts, annars returnerar den False.

8.2. Läsa och skriva till en textfil

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

För att skriva information, använd två operatörer "Skriv ut" och "Skriv", vars syntax är följande:

Skriv ut # FileHandle%, VarBuffer [;]

Skriv # FileHandle%, VarBuffer [;]

· Skriv ut / skriv - operatörsord.

· #FileHandle% - pekare till filen där information kommer att placeras.

· VarBuffer är det värde som ska skrivas till filen.

· ; - en valfri parameter som används när du skriver till en textfil betyder att nästa värde skrivs till samma rad, och om det saknas, till nästa.

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

Linjeingång # FileHandle%, VarBuffer

Mata in # FileHandle%, VarBuffer

· Line Input / Input - operatörsord.

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

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

Skillnaden mellan operatörerna "Line Input" och "Input" är att den första är endast avsedd för textfiler, och den andra - för alla. För textfiler läser "Inmatning" data i 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 alla avgränsare.

Notera

Visual Basic har inga formatkontroller för tidigare genererade filer. Därför kan tecknet "2" läsas som motsvarande tal och vice versa.

8.3. Arbetar med binära filer

Filer öppnas i binärt format av "Open" -operatören i "Binary" -läget. Ett särdrag hos det här läget är att arbetet med en fil uteslutande fokuseras på specifika byte. Eftersom Visual Basic kan adressera direkt till önskad plats i filen kallas detta läge också - direktåtkomstläge... En annan funktion i det här läget ä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 öppnas i binärt läge görs med följande syntax:

Sätt # FileHandle%,, NameVar

· Put - namnet på operatören för registrering av information.

· RecNumber - byte nummer för filen till vilken informationen kommer att skrivas (valfritt).

· NameVar är en variabel vars innehåll skrivs till filen.

Läsa information från en fil i binärt läge utförs med följande operatör:

Skaffa # FileHandle%,, NameVar

· Get - namnet på informationsinspelningsoperatören.

· FileHandle% - filpekare.

· RecNumber - filbytesnummer från vilket information kommer att läsas (valfritt).

· NameVar - namnet på variabeln som den lästa informationen ska placeras i.

Eftersom det binära läget är inriktat på byte av information, måste buffertvariabeln vid läsning från en fil ha en strikt definierad typ: antingen "Byte", då läses det numeriska värdet för byten eller teckenvärdet för en fast längd i ett tecken, då läses byten som ett tecken, ANSI, vars kod motsvarar storleken på byten. Denna symbol kan till och med vara en kontrollsymbol, som inte kan uppnås vid textfiler.

Notera

Om parametern "RecNumber" saknas kommer informationen att skrivas eller läsas i nästa byte i filen efter den som de arbetade med tidigare.

8.4. Grafisk manipulation

Du kan också spara och extrahera grafiska bilder i filer. För att hämta en ikon från en bitmapp eller fil och tilldela den till Picture -egenskapen för PictureBox och Image -kontroller, använd funktionen LoadPicture () med följande syntax:

ImageCtrl.Picture = LoadPicture (FilePath)

· ImageCtrl - namnet på bildfönsterkontrollen, bildkontrollen eller formuläret;

· LoadPicture är namnet på funktionen;

· FilePath är filens fullständiga namn.

SavePicture ImageCtrl .Picture, FilePath

· SavePicture - operatörsnamn;

· ImageCtrl - namnet på bildfönsterkontrollen, bildkontrollen eller formuläret;

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

· FilePath är det fullständigt kvalificerade namnet på filen och dess plats på disken.

8.5. Arbeta med data i registret

Du kan använda Windows -registret för att lagra små bitar av teckenformatinformation. Det finns fyra procedurer i Visual Basic som du kan använda för att komma åt det. De är mycket enkla att använda, men de har en stor nackdel: 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 registernycklar måste du använda specialfunktionerna i "Win 32 API".

För att få värdet på en parameter från en Visual Basic -nyckel i Windows -registret, använd följande funktion:

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

· MyString - en sträng för lagring av värdet som returneras av funktionen;

· GetSetting är namnet på funktionen.

· VBKeyName är ett strängvärde som är namnet på en intern VB / VBA -undernyckel.

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

· Standard är ett valfritt argument, vars värde returneras vid ett fel (frånvaro av en parameter).

Följande uttalande används för att lagra något värde i Windows -registret:

SaveSetting VBKeyName, Section, Key, MyString

· SaveSetting - operatörsnamn.

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

För att få en matris 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 "Variant" -värden som returneras av funktionen.

· SetAllSettings är namnet på funktionen.

· Sektion - Ett strängvärde som representerar en sektion eller undersektion av en specifik applikation.

Om du vill ta bort en hel parametersektion använder du en sats med följande syntax:

DeleteSetting VBKeyName, Section, Key

· DeleteSetting - operatörsnamn.

Testfrågor för självtest

  1. Hur kan viss information lagras under lång tid?
  2. Vad är en fil?
  3. Vilka filnamn vet du?
  4. Ge syntaxen för "Öppna" -uttalandet. Förklara syftet med dess parametrar.
  5. Hur kan du dela flera applikationer på samma fil samtidigt?
  6. Hur bestämmer jag att informationen i filen är slut?
  7. Varför rekommenderas det att stänga det efter att ha arbetat med en fil?
  8. Hur ser du 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 operatörerna "Skriv ut" och "Skriv" när du arbetar med filer?
  12. Vad är skillnaden mellan operatörerna "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 på hårddisken och läsa det från hårddisken. Detta är till exempel nödvändigt för att spara programinställningarna; det är osannolikt att användaren gillar programmet, som måste konfigureras igen nästa gång det startar.

Den här artikeln kommer att fokusera på att arbeta med textfiler med Visual Basic.

Filbeskrivning

För att arbeta med filer använder operativsystemet input / output -kanaler, dvs. varje öppen fil har sitt eget nummer.

Visual Basic har 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- en valfri parameter som låter dig bestämma värdena för fria kanaler, om RangeNumber= 0 (standard), returneras kanalnumret från intervallet 1 - 255, och om 1, sedan från intervallet 256 - 511.

MyFile = FreeFile "Variabeln MyFile har tilldelats en ledig kanal och kan nu användas för att arbeta med filer

Arbeta med textfiler

Oftast stöter du 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 hjälp av operatören Öppen (Filnamn) För som #Filnummer, var:

Inmatning- öppna filen för läsning, om filen inte existerar 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, kommer den att skapas, 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 kan du använda funktionen Inmatning (Antal_Tecken som ska läsas, #Filnummer) och rad för rad används funktionen för detta Linjeingång #Filnummer, Var_för_läsa.

Dim MyFile

Dim S Som sträng "Variabel för lagring av läsdata

MyFile = FreeFile

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

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

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

Dim i As Integer "Variabel för slingan

Dim tS Som sträng "Variabel för att läsa rader

Dim S Som sträng "Variabel för lagring av slutdata

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

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

För i = 1 till 5

Linjeinmatning #MyFile, tS "Vi läser filen TEST.TXT rad för rad

Om i => 5 Då S = tS "Om den femte raden, lagrar vi 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äsdata

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

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

S = Inmatning $ (LOG (1), 1) "Läser hela filen i variabel S

Stäng #MyFile "Stäng filen

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

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

Dim 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 utmatning som #MyFile "Öppna TEST.TXT -filen för inspelning

Skriv ut #MyFile, "Den här strängen skrevs av utskriftsoperatören, den är utan citattecken ..."

Skriv #MyFile, "Den här raden skrevs av Write -satsen, den står i citattecken ..."

Stäng #MyFile "Stäng filen

Det är allt. Som du säkert redan har förstått används operatören för att stänga filen 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ärer.

Windows

Syfte med arbetet: Att lära sig och använda operatörerna på VB 6 -språket för att arbeta med filer av olika typer: sekventiella (text) filer, slumpmässiga åtkomstfiler, binära filer. Undersöker och använder verktyget AllmänningDialog för att öppna och spara filer, välj ett teckensnitt och en färg och använd objektet Urklipp för att lagra textfragment - med exemplet att skapa en enkel textredigerare.

Kontrollfrågor:

1. På vilka sätt kan du öppna en textfil? Hur kan jag stänga en textfil och andra öppna filer?

2. Hur öppnas data för en textfil för skrivning? Vad är skillnaden mellan skriva och skriva ut uttalanden?

3. Hur läses data från en öppen textfil? Hur skiljer sig inmatnings- och radinmatningsuppgifterna från varandra? Vilken funktion kan användas för att läsa ett visst antal tecken från en fil? Hur kan jag läsa alla tecken i en fil?

4. Vad är en anpassad datatyp och hur används detta koncept när man arbetar med filer med slumpmässig åtkomst ( raf)?

5. Med vilka operatörer från filen raf posterna läses till filen raf skrivs nya rekord?

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

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

8. Hur kontrollen kan tillämpas AllmänningDialog att ladda innehållet i en textfil i en textruta? Hur kan jag spara den redigerade texten i en textfil med samma kontroll?

9. Hur kontrollen kan tillämpas AllmänningDialog för att ladda ner filinnehåll rtf i fält RikTextruta? Hur du sparar redigerad text i en fil med samma kontroll rtf?

10. Hur kontrollen kan tillämpas AllmänningDialog att ändra värdena på teckensnittsparametrarna och ändra färgen på texten i fönstret Textruta(eller en markerad textbit i ett fönster RikTextruta)?

Exempel 7.1. Tänk på en applikation som visar att du skriver till en textfil (och läser från en textfil) "information om anställda" - rader, som alla innehåller ett identifieringsnummer, fullständigt namn, födelsedatum och födelseort för en anställd. Raderna bildar en tabell, som på skärmen kommer att simulera 4 kombinationsrutor (fig. 7.1), som bildar en uppsättning Comb (i) -objekt, vars Style -egenskap har värdet 1 - SimpleCombo.

Markera raden som ska raderas ", vbExclamation

Kam (j) .RemoveItem i

"Infoga en ny post i en tabell:

Privat sub mnuInsert_Click ()

i% = Kam (0) .ListIndex

Om jag< 0 Then

MsgBox "Välj raden att infoga före den", vbExclamation

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

Kam (1) .AddItem InputBox, i

Kam (2) .AddItem InputBox ("Ange födelsedatum."), I

Kam (3) .AddItem InputBox, i

'Ändra posten i tabellen:

Privat sub mnuUpdate_Click ()

i% = Kam (0) .ListIndex

Om jag< 0 Then

MsgBox "Välj raden som ska ändras", vbExclamation

Kam (0) .Lista (i) = InputBox ("Ange nummer", Kam (0) .Lista (i))

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

Comb (2) .List (i) = InputBox ("Ange ditt födelsedatum", Comb (2). List (i))

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

"Rensa hela bordet:

Privat sub mnuClear_Click ()

'Populera tabellen med information från en textfil:

Privat sub mnuLoad_Click ()

Öppna "person. Txt" för inmatning som nr 1

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

Kam (0) .AddItem nummen

Kam (1) .AddItem fio

Kam (2) .AddItem bdate

Kam (3) .AddItem -block

"Skriva tabellinformation till en textfil:

Privat sub mnuSave_Click ()

N% = Kam (0) .ListCount

Öppna "person. Txt" för utmatning som nr 1

För i = 0 till N - 1

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

fio = Kam (1) .Lista (i)

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

block = kam (3). lista (i)

Skriv # 1, nummen, fio, bdate, block

'Avstängning av program:

Privat del mnuExit_Click ()

Exempel 7.2 ... Tänk på en applikation som visar användningen av kontroller AllmänningDialog att öppna och spara en fil, välja teckensnitt och färg och redigera text.

Formatera fil Text laddas in i textfältet (vänster fält i fig. 7.2) och formatfilen RTF- på fältet RikTextruta(höger marginal i fig. 7.2).

objekt

Klass

objekt

Fast egendom

objekt

Fastighetsvärde

”Paneler i allmänhet

dialog "

Öppna / Spara som fliken

Fliken Font

Färgflik

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

Privat sub mnuOpen_Click ()

CommonDialog1.ShowOpen

F $ = CommonDialog1.FileName

If Right (F, 3) = "rtf" Då

RichTextBox1.LoadFile F

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

Öppna F för ingång som # 1

S $ = Ingång (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 arbetets gång måste eleven slutföra två uppgifter.

Övning 1. I processen för att slutföra uppgiften behärskar eleverna möjligheterna att arbeta med filer med slumpmässig åtkomst ( RAF -slumpmässigtillgångfil).

För en given databastabell deklarerar du en anpassad datatyp, deklarerar en variabel av den typen (självstudie, s. 108 - 112), bygger och felsöker procedurer som använder en anpassad typvariabel.

I synnerhet implementeras procedurer för menykommandon Skriv till filRAF och Läs från filRAF... Som i exempel 7.1 används en rad objekt för att redigera data. KombinationLåda och meny Redigera med fem undermenykommandon: Lägg till en anteckning, Ta bort inlägg, Infoga post, Ändra rekord, Rensa bordet.

Alternativ 1.

Ange en anpassad datatyp för "Bil" -tabellen (tabell 7.1) i "Autoservice" -databasen.

bil

bil

fel

Nedre raden i tabell 7.1 visar typerna av fält.

Alternativ 2.

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

fel

namn

fel

Pris

Nedre raden i tabell 7.2 innehåller fälttyper.

Använd exempelapplikationen 7.1 som ett exempel, organisera datainmatning och redigering för den presenterade tabellen, skriva denna data till en slumpmässig åtkomstfil och läsa data från en slumpmässig åtkomstfil. Som i exempel 7.1 implementeras dessa åtgärder som funktionen av menykommandona som visas i fig. 7.1.

Uppgift 2. När de slutför uppgiften lägger eleverna till nya funktioner i programmet i exempel 2, vilket gör det möjligt att se programmet som en enkel textredigerare.

Alternativ 1 AllmänningDialog implementera menykommandon Font och Färg(med undermeny Teckenfärg och Bakgrundsfärg). Med hjälp av dessa kommandon bör val av teckensnitt (dess namn, stil och storlek) för det markerade textfragmentet i fönstret tillhandahållas RikTextruta, liksom valet av färgen på markeringens symboler och valet av bakgrundsfärgen för hela fönstret.

Indikation: När du sätter upp ett objekt AllmänningDialog Om du vill välja ett teckensnitt med egenskapen (Anpassad) måste du ange värdet Flags till 1, 2 eller 3 (se självstudien, s. 183).

Alternativ 2... Använda kontrollen AllmänningDialog implementera menykommandon Redigera(undermeny Kopiera, Skära och Klistra), vars syfte är kopiering eller radering till Urklipp för det markerade textfragmentet och Föra in till den markerade platsen i texten för innehållet i Urklipp.

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

Urklipp. SetText RichTextBox1.SelText

RichTextBox1.SelText = Urklipp. GetText

Dela detta