---
title: "Problem med pascal programmet..HJÄLP"
type: "forum-thread"
url: "https://www.webforum.nu/amne/programmering/100760-problem-med-pascal-programmet-hjälp"
topic: "Programmering"
topic_url: "https://www.webforum.nu/amne/programmering"
author: "Paula"
published: "2004-04-01T15:03:03.000Z"
updated: "2004-04-06T14:26:03.000Z"
replies: 4
views: 454
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/programmering/100760-problem-med-pascal-programmet-hjälp"
---

# Problem med pascal programmet..HJÄLP

## #1 — Paula, 2004-04-01T15:03Z

Jag har fixa att det går att ladda textfilen samt att spara poster till filen.

Uppgift 1: Betygsregister 

Beskrivning: Programmet ska presentera en meny där man kan ladda, spara, söka och ändra i betygslistor. 

Uppgift: Skapa ett menydrivet program där man kan ladda, spara, söka och ändra i betygslistor. Betygslistorna ligger lagrade som kommaseparerade textfiler. Textfilen kan innehålla som mest 500 poster. Överst i filen finns en rad med rubriker. Varje post är en rad som t.ex. består av: namn,betyg1,betyg2,betyg3 
Alla poster i en fil innehåller lika många betyg per person. Dock kan en fil innehålla betygen för 3 ämnen och en annan betygen för 10 ämnen. 
(Min 1ämne, max 20 ämnen). 

Följande sökfunktioner ska finnas: 

Alla elever med ett visst betyg i ett visst ämne ska kunna sökas ut. 
Alla elever med IG i något ämne ska kunna sökas ut och det ska synas vilket ämne eleven hade IG i. 
Alla elever vars namn innehåller en angiven söksträng, samt samtliga deras betyg. 
Elever ska kunna läggas till. 
Ett körexempel visar alla funktioner. Se nedan

Välkommen till Betygsprogrammet! 
1\. Ladda in ett register 
2\. Spara nuvarande register 
3\. Sökningar 
4\. Ändra betyg 
5\. Lägg till elev 
6\. Avsluta 

val\> 1 

filnamn\>\> komvux2001.txt 

Filen laddad, 2 ämnen, 4 elever. 

1\. Ladda in ett register 
2\. Spara nuvarande register 
3\. Sökningar 
4\. Ändra betyg 
5\. Lägg till elev 
6\. Avsluta 

val\> 3 

Sökningsalternativ 

1\. Sök ut elever med visst betyg i valfritt ämne. 
2\. Sök ut elever med IG i någon kurs 
3\. Sök ut elever och deras betyg efter del i namnet 
4\. Återgå till huvudmeny 

val\>\> 1 

Följande ämnen finns: 

1\. svenska a 
2\. svenska b 

val\>\>\> 2 

betyg\>\>\> vg 

Följande personer har vg i svenska b: 

Adam Virstad 
Anders Alfredsson 

Sökningsalternativ 

1\. Sök ut elever med visst betyg i valfritt ämne. 
2\. Sök ut elever med IG i någon kurs 
3\. Sök ut elever och deras betyg efter del i namnet 
4\. Återgå till huvudmeny 

val\>\> 2 

Följande elever har IG i någon kurs: 

Nils Karlsson har IG i svenska a, svenska b 
Oskar Ek har IG i svenska a 

Sökningsalternativ 

1\. Sök ut elever med visst betyg i valfritt ämne. 
2\. Sök ut elever med IG i någon kurs 
3\. Sök ut elever och deras betyg efter del i namnet 
4\. Återgå till huvudmeny 

val\>\> 3 

Ange del i namnet\>\>\> sson 

                                svenska a        svenska b 
Nils Karlsson                        ig                    ig 
Anders Alfredsson                vg                   vg 

Sökningsalternativ 

1\. Sök ut elever med visst betyg i valfritt ämne. 
2\. Sök ut elever med IG i någon kurs 
3\. Sök ut elever och deras betyg efter del i namnet 
4\. Återgå till huvudmeny 

val\>\> 4 

1\. Ladda in ett register 
2\. Spara nuvarande register 
3\. Sökningar 
4\. Ändra betyg 
5\. Lägg till elev 
6\. Avsluta 

val\> 4 

Ange del i namnet: son 

Välj en: 
1 - Nils Karlsson 
2 - Anders Alfredsson 

val\>\> 2 

Vilket betyg ska ändras för: Anders Alfredsson ? 

1 - svenska a 
2 - svenska b 

val\>\> 1 

Anders Alfredsson har VG i svenska a. 

Nytt betyg\>\> MVG 

1\. Ladda in ett register 
2\. Spara nuvarande register 
3\. Sökningar 
4\. Ändra betyg 
5\. Lägg till elev 
6\. Avsluta 

val\> 5 

Namn\>\> Anna Andersson 
Betyg i svenska a\>\> g 
Betyg i svenska b\>\> mvg 

Anna Andersson inlagd i registret. 

1\. Ladda in ett register 
2\. Spara nuvarande register 
3\. Sökningar 
4\. Ändra betyg 
5\. Lägg till elev 
6\. Avsluta 

val\> 2 

ange filnamn\>\> komvux2001.txt 

Filen sparad, 2 ämnen, 5 elever. 

1\. Ladda in ett register 
2\. Spara nuvarande register 
3\. Sökningar 
4\. Ändra betyg 
5\. Lägg till elev 
6\. Avsluta 

val\> 6

Bilagor:

- [pascal_fil.txt](https://www.webforum.nu/a/3192.txt)

Permalänk: https://www.webforum.nu/p/100760

## #2 — spango, 2004-04-01T15:19Z

Det var ett... långt... inlägg. Vad är det som är problemet? Att bara skriva uppgiftstexten räcker inte.

Permalänk: https://www.webforum.nu/p/1312921

## #3 — Paula, 2004-04-06T12:39Z

Jo, så här är det. I textfilen, Betygsregister.txt innehåller följande rader: 

Namn,Matematik,Svenska,Engelska,Hemkunskap
Kenneth Eklund,g,g,g,g
Paula Eklund,vg,g,g,g

Jag vill läsa i från filen och spara data i en record, elevPost :

str255      = string\[255\];
   elevPost  = record
                    namn  : str255;
                    kurs1 : str255;
                    kurs2 : str255;
                    kurs3 : str255;
                    kurs4 : str255;
                 end;

   elevInmat = array\[1..500\] of elevPost; {arrayen kan innehålla 1 till 500 elever, varje element är en typ av elevPost}

Problemet är att jag vill läsa av textfilen och spara data i elevPost record. T ex. andra raden från textfilen:
Kenneth Eklund,g,g,g,g
Kenneth Eklund skall sparas i elevPost.namn
första g i elevPost.kurs1 osv. (komma tecknen skall inte sparas)
Proceduren nedan fick jag till att elevPost.namn består av hela andra raden dvs. Kenneth Eklund,g,g,g,g och det vill jag inte. Hur gör man för att dela data i olika delar och sparas ner i resp. record egenskap ?

{Proceduren läser in den sparade filen för ev. skrivning/läsning }
procedure LasInfil(var el : elevInmat;
                   var a : integer);
var
   f       : text;
   filnamn : string\[50\];
   rad     : string\[255\];
   tecken  : char;
                    
begin
  tecken := ',';
   write('filnamn \>\> ');
   readln(filnamn);  
   assign(f,filnamn);
   reset(f);
   a := -1;
   while not Eof(f) do {medan det är inte slut på filen}
        if not Eoln(f) then
   begin
      inc(a); {öka räknaren med 1}  
      readln(f, rad); {läser av filen}
      el\[a\].namn := rad;
      writeln(el\[a\].namn);
   end;
        writeln('nästa rad ',rad);
   close(f);
end; { LasInfil }

Permalänk: https://www.webforum.nu/p/1317779

## #4 — Viktor, 2004-04-06T13:39Z

Tråd flyttad från "Programmering - Övrigt".

/Viktor

Permalänk: https://www.webforum.nu/p/1317808

## #5 — Hardrocker, 2004-04-06T14:26Z

Tyvärr så hinner jag bara skriva ett kort inlägg. Kan skriva ett utförligare i morgon om det skulle behövas.

Du måste själv splitta raden genom loopa igenom strängen rad och leta efter kommatecken. När du har hittat det första kommatecknet så stoppar du in det som står framför det i Elevpost.namn osv.

Ett kort exempel

```
var
i, LastI, Raknare: integer
rad: string
begin
LastI =1;
Raknar=1;
for i:=1 to Length(rad) do
if (rad[i] = ',') then
begin
if Raknare = 1 then
ElevPost.Namn := Copy(rad,LastI +1, LastI - 1)
else if Raknare =2 then
ElevPost.Kurs1 := Copy(rad,LastI +1, LastI - 1)
osv.
LastI := I;
Inc(Raknare);
end;
end;
```

Jag har inte testat koden så det är säkert nån bugg i den.

Om jag hade skrivit koden i Delphi så hade jag läst in varje rad i en TStringlist och splittat den vid inläsningen med hjälp av CommaText.

/Ante S

Permalänk: https://www.webforum.nu/p/1317827

---

Tråden på webben: https://www.webforum.nu/amne/programmering/100760-problem-med-pascal-programmet-hjälp
