05. januar 2006 - 14:30Der er
14 kommentarer og 1 løsning
Objektorienteret programmering
Problemet er at jeg har lidt svært ved at se en objektorienteret (samt reusable code) i følgende. Jeg har 3 klasser, clsFile, som tager sig af filoperationer, clsDatabase, som tager sig af databaseoperationer (surprise? :)) og en klasse, clsScanner, som er "hovedklassen".
Programmet skal hente data fra en fil som f.eks. kunne indeholde linier som følger: "010105", "0700", "234233233", "3243432" "020105", "0700", "234233233", "5244432" "020105", "0710", "234335323", "8245432"
og sætte linierne ind i en tabel i databasen. Men hvordan får jeg det "objektorienteret"??
I clsScanner opretter jeg et objekt af typen clsFile og bruger den metode jeg har lavet, SplitFile, som tager som argument navnet på filen som der skal hentes fra, samt en split-karakter. Det går fint. Jeg kan bare ikke se hvordan jeg kommer fra File-objektet til et Database-objekt som kan sætter dataene ind i tabellen! :(
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Det er konceptuelt jeg ikke forstår hvad der skal ske. Det kan være jeg tager fejl af noget, men binder jeg ikke de 2 klasser sammen (clsDatabase og clsFile) hvis jeg i den ene opretter et objekt af den andens type?
Jeg kan godt se hvad du mener. Jeg er såmænd ikke sikker på jeg er hård nok i OO-tankegang til at jeg kan komme med noget konstruktivt.
Er der en method i clsDatabase, der kan indsætte i databasen? Hvilke parametre tager den method? Kan du lave en intermdiær funktion mellem dit array og en sådan method, som omformer dit array til en parameter, de indbyggede methods i clsDatabase kan acceptere?
Nope, den kan checke om en given tabel eksisterer og slette en given tabel. Men jeg laver lige en som kan tage 4 parametre.
Der hvor jeg knækker sammen er at i clsFile gennemløbes filen linie for linie og hver linie hakkes op i 4 bidder i arrayet. disse 4 bidder skal så sættes ind i tabellen vha. et clsDatabase objekt's metode InsertData(). Men skal det være clsFile objektet som "kalder" clsDatabase objektets metode eller skal det være fra clsScanner ("hoved klassen")?
Er der en funktion indbygget i Access som kan tælle antallet af linier i en fil? For så kan jeg lave en løkke i clsScanner som kan kalde clsFile og dernæst clsDatabase for hver linie i filen!
Function LineCount() as long Dim intFileNo As Integer Dim strLine As String Dim i as long intFileNo = FreeFile() Open "C:\stilnavn\MyFile.txt" For Input As #intFileNo
' Read and print all lines to the Immediate Window. Do While Not EOF(intFileNo) i=i+1 Loop
Der vil vel være det problem at med løkken vil SplitFilelines bliver kaldt med filen igen og derfor vil det altid være 1. linie i filen der hentes... :(
Function SplitFilelines(FileName As String, Character As String) ' As Variant Dim Line As String Dim varArray As Variant Dim Counter As Integer Dim objDatabase As clsDatabase
Open FileName For Input As #1 While Not EOF(1) Line Input #1, Line varArray = Split(Replace(Line, Chr(34), ""), Character) With objDatabase '??? varArray som parameter til funktionen InsertData .InsertData varArray End With Wend Close 1 End Function
har du det til at virke - eller virker InsertData ikke?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.