16. december 2014 - 13:14Der er
9 kommentarer og 1 løsning
Opbygning af File of Record
Når jeg prøver at anvende filetypen "File of Record" får jeg en fejl, der oplyser at at der mangler en FINALIZE ? Jeg kan ikke finde hjælp (som jeg forstår) i Delphis hjælpesystem. Er er en der kan hjælpe mig?
I min gamle Pascal bog ((fra 1972 eller deromkring )+/-) er der et eksempel på brug af FILE OF RECORD.
Hvis ikke en af "vore" andre bruger / eksperter finder et mere opdateret eksempel skal jeg finde bogen frem og skrive kode-eksemplet af (bogstav for bogstav/ bogstaveligt !)
// // VÆR OPMÆRKSOMOM PÅ AT DETTE ER PASCAL (CP/M 2.2 // DOS 3.0) // KODE, DET SKAL NOK "OVERSÆTTES" TIL "RIGTIG" DELPHI.... //
Program Medlemspost;
Type Medlemspost = Record Loebenr : Integer; navn : String[50]; gade : String[50]; postnrby : string[50]; info : string[100]; END;
RegFile = File OF MedlemsPost;
// den oprindelige tekst er her REGISTER, men det er reser- // veret, så det døbes om til REGfile //
VAR
Medlem : MedlemsPost; Registerfil : Regfile ; // se REGISTER ovenfor CPMnavn : String[14]; // FIL-NAVNET nr : Integer;
begin // // VÆR OPMÆRKSOMOM PÅ AT DETTE ER PASCAL (DOS) KODE, // DET SKAL NOK "OVERSÆTTES" TIL "RIGTIG" DELPHI.... // // Write(ClrHOM); // Sletter skærm Write('Hvad skal kartoteket hedde (diskfilnavn) ? '); ReadLN(CPMNavn); // hent FILNAVN Assign(Registerfil,CpmNavn); Rewrite(RegisterFil); Writeln('Indtast oplysninger til katrtoteket:'); Writeln('Negativt løbenummer afbryder '); Writeln(); Write('Løbenummer: '); ReadLN(nr); While not nr < 0 do BEGIN with medlem do BEGIN Loebenr := nr; write('navn '); Readln(navn); write('gade '); Readln(gade); write('postnr og by: '), readln(postnrby); write('Oplysninger: '); Readln(Info); END; (* with *) Write(Registerfil,medlem); writeln(); write('Medlemsnummer:');Readln(nr); END; (* while *) Close(registerfil); Writeln('I diskfilen ', cpmnavn , ' er der nu gemt ' , Length(Registerfil), ' medlemsposter '); END.
Vær opmærksom på, at der kan være manglende '-er . Jeg har ikke prøvet at lave koden om til nutids-Delphi, men det skulle være en (forhåbentlig) nem sag.
(Og så er bogen fra 1986 og ikke 1972 som jeg troede - undskyld til forfatterne mv.. )
Ps: I stedet for at bruge den antikverede ASSSIGN / REWRITE / medtodik burde du kigge lidt på STREAMS ... (hurtigere og nemmere !)
Tak sal du have for ulejligheden. Men det var nu ikke det jeg var ude efter!. Min hensigt var at oprette en filtype af "FILE OF RECORD". Jeg mener jeg tidligere har anvendt en sådan filtype, uden dog nu at kunne finde koden. Editoren accepterer typebetegnelsen, men fejlen opstår i compileren.
Jeg har også anvendt Filestreams (som der iøvrigt tidligere er spurgt om), men den er lige så klumpset som den kode du har haft ulejligheden med at finde og skrive!
Jeg vil ikke afvise, at det var i de "gode, gamle DOS dage" man kunne anvende filtypen.
En anden ide, som strejfer mig er DATABASER. De er jo i den grad opbygget som RECORDS. Og det er jo i princippet "bare" (I meget store pinger) fastlængde strenge, integers, booleans, reals mere eller mindre "stablet" oven på hinanden i en kendt orden.
En af tankerne med CPM progammet (DOS ?) var nu også at på et senere tidspunkt at prøve at få det til at køre // dvs. den mekaniske transformation til Delphi. Både som en øvelse/repetition for mig men også for evt. andre.
Jeg har kørt Records før (osse i Delphi - men det var i harddisk version 3 , nu er jeg oppe i version 10-15 stykker) eller på en forlængt hedengang maskine. Så det kan lade sig gøre. hvilket får mig til at tænke på om der kan være en fejl i opsætning eller måske compileren (omend det sidste er meget lidt sandsynligt).
Jeg kører (stadig D7 enterpr. 2. ed) og den kan næsten alt. Men er dog utrolig sløv i MS-net-løsninger. (det var den heller ikke bygget til !)
Men held og lykke med opgaven / projektet.
(OG PS: Ja - den gamle kode er uintelligent- men der er fra før 1986 - husk det... !)
Det har ret! Men jeg kunne ikke se koblingen til mit problem med typebestemmelsen. Dit svar forstod jeg straks.
Tak for det!
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.