Permalänk
Medlem

Pascal, Function

Jag har ett litet problem med att få tillbaka världen från en Function.

Functionen ska bara lästa från lokala variablar.
Functionen får inte skriva till globala variablar.

Vet inte om det blir riktigt rätt, skriver hur principern är.

function GetData (id : integer) var save1, save2 : integer; begin. readln(save1); readln(save2); end; ________ readln(uID); GetData(uID); ________

Hur ska jag göra för att spara flera värden till en Global Variabel när själva functionen inte "får" spara till den?
Vet hur man får tillbaka 1 värde med att sriva "GetData := [DATA]"

Permalänk
Medlem

Det framgår inte riktigt vad du önskar för slutresultat. Som det ser ut nu använder du en funktion som inte gör någonting. Sen ska inte readln ingå i funktionen utan i huvudprogrammet. Sedan behandlar funktionen de data som anges via readln. Varför har du deklarerat variablerna save1 och save2 inne i funktionen? Ska de göra något speciellt?

Enklare blir nog att du skriver mer utförligt vad som ska göras och vad slutresultatet förväntas bli. Just nu är det väldigt luddigt.

Visa signatur

Ne nos sequere nobis secede

Permalänk
Medlem

Ok, Här är programet.

program Elev; {$APPTYPE CONSOLE} uses SysUtils; type Tperson = record ID : integer; Namn : string; Efternamn: string; Epost: string; end; function PersonSkapa(elev : array of Tperson) : string; var sval : integer; begin writeln('Skapa Elev Meny, Välj Elev ID.'); readln(sval); writeln('Du har valt Elev id: ', sval); elev[sval].ID := sval; //fixa så den savar dett rätt. readln(elev[sval].Namn); readln(elev[sval].Efternamn); readln(elev[sval].Epost); end; var elever : array[1..10] of Tperson; input : integer; prog : boolean; begin prog := true; while prog = true do begin writeln('Meny, Skapa, Visa, Rensa [1,2,3]'); readln(input); case input of 1 : Personskapa(elever); 2 : begin writeln(elever[1].ID); //temp test för sparning. writeln(elever[1].Namn); writeln(elever[1].Efternamn); writeln(elever[1].Epost); end; 3 : writeln('Renska Function'); else writeln('Ogiltig Input!') end; end; end.

Personer Skapa är bara ett försök.

Permalänk
Medlem

Ok, tror jag förstår bättre även om en beskrivning på svenska av programmets syfte hade varit bättre. Vet fortfarande egentligen inte vad du har problem. Får du några felmeddelanden eller funkar det bara inte?

Nu var det länge sen jag programmerade och särskilt i Pascal men för mig känns vissa saker lite underligt
- case 1 - du åkallar funktionen PersonSkapa(elever) men var kommer inputen till elever från?
- du har deklarerat en boolsk variabel som är true under hela körningen vilket innebär att while-satsen blir en evighetsloop. Är det meningen?
- case 3 - ska den göra något eller bara skriva på skärmen att något rensas?

Visa signatur

Ne nos sequere nobis secede

Permalänk
Medlem

Vill att elev[sval].* ska sparas till elever[1].* (om sval = 1) när Functionen är slut.
det är menigen att den ska loopas i en evighet,

den ska spara till den fil eller ngt sätt att spara.