Ga naar inhoud

[Turbo Pascal[oud]] Readln in Graphische-mode


anoniem

Aanbevolen berichten

Weet iemand de code voor 'readln' in grafische modus? Ik kan in textmode wel gewoon readln gebruiken, maar hoe doe ik dat in Grapische Modus? Is er iemand die zich nog iets van die jaren kan herinneren :P ? [readln] [code:1:b5b81fc059] Program readln_1; USES CRT; VAR variable1 : string; BEGIN writeln('Enter Value for variable1: '); readln(variable1); writeln('variable is ',variable1,' '); END. [/code:1:b5b81fc059] [graph] [code:1:b5b81fc059] PROGRAM read_in_graph; USES Graph; BEGIN ????? END. [/code:1:b5b81fc059]
Link naar reactie
  • Reacties 64
  • Aangemaakt
  • Laatste reactie

Beste reacties in dit topic

Heb je zoiets al geprobeerd?[code:1:37546d8599] program ReadLn1; uses Graph; var Variable1: string; begin InitGraph(D8bit, m640x480, ''); if GraphResult <> grOK then begin WriteLn('Graphics mode 640x480x256 not supported'); Halt; end; SetTextStyle(DefaultFont, HorizDir, 1); OutTextXY(1, 1, 'Enter a value for Variable1:'); ReadLn(Variable1); OutTextXY(1, 20, 'Variable1 = '+Variable1); OutTextXY(1, 40, 'Hit Enter to continue...'); ReadLn; CloseGraph; end. [/code:1:37546d8599]
Link naar reactie
Probeer dit eens? [code:1:7bb5019e61] program ReadLn1; uses Graph; var Variable1: string; procedure ReadTextXY(X, Y: byte; var S: string); var SLen: byte absolute S; Ch: char; begin repeat OutTextXY(X, Y, S+'_ '); Ch := ReadKey; case Ch of ^H: if Length(S) > 0 then SLen := SLen - 1; ' '..'~', #128..#254: S := S + Ch; end; until Ch = ^M; end; begin InitGraph(D8bit, m640x480, ''); if GraphResult <> grOK then begin WriteLn('Graphics mode 640x480x256 not supported'); Halt; end; SetTextStyle(DefaultFont, HorizDir, 1); OutTextXY(1, 10, 'Enter a value for Variable1:'); Variabele1 := ''; ReadTextXY(1, 20, Variable1); OutTextXY(1, 30, 'Variable1 = '+Variable1); OutTextXY(1, 40, 'Hit Enter to continue...'); ReadLn; CloseGraph; end. [/code:1:7bb5019e61]
Link naar reactie
Klopt niet. a) [code:1:25fb8e09b6]USES CRT, GRAPH[/code:1:25fb8e09b6] b) [code:1:25fb8e09b6]^H: if Length(S) > 0 then SLen := SLen - 1; [/code:1:25fb8e09b6] geeft de volgende melding: 'Error 91: ":=" expected.' als ik daar [code:1:25fb8e09b6]^H: if Length(S) > 0 then SLen := SLen := - 1; [/code:1:25fb8e09b6] van maak zegt de Compiler Constant out of range.
Link naar reactie
(A) Dit kan kloppen. Ik doe dit hier uit m'n hoofd omdat ik Turbo Pascal hier niet geinstalleerd heb. Maar ik neem aan dat je zelf ook een beetje meedenkt. (B) Snap ik niet. Die regel is goed. SLen := SLen - 1; vermindert de lengte van S met 1 en verwijdert dus effectief de laatste letter van S (^H is namelijk de backspace key). Waar exact in die regel geeft ie de foutboodschap?
Link naar reactie
Hehehehe, ja, ik moest eerst ook weer even diep graven, maar het komt langzaam weer allemaal boven :) Als ik me goed herinner heeft Borland een paar jaar terug TurboPascal freeware gemaakt. Ik zal eens op hun site zoeken of ik een download link kan vinden. Weer eens even installeren. Lijkt me wel geinig. Ben inmiddels in een behoorlijk nostagische bui aanbeland :)
Link naar reactie
Ok, ik heb me even uitgeslooft :) Allereerst heb ik Turbo Pascal 5.5 gedownload van Borland's website, hier: http://community.borland.com/article/0,1410,20803,00.html Vervolgens de code gecompileerd (zaten inderdaad een paar typfoutjes in). Deze code werkt: [code:1:b063aba922] program ReadLn1; uses Graph, Crt; var GraphDriver: integer; GraphMode: integer; Variable1: string; procedure ReadTextXY(X, Y: byte; var S: string); var SLen: byte absolute S; Ch: char; begin repeat OutTextXY(X, Y, S+'_ '); Ch := ReadKey; case Ch of ^H: if Length(S) > 0 then SLen := SLen - 1; ' '..'~', #128..#254: S := S + Ch; end; until Ch = ^M; end; begin GraphDriver := VGA; GraphMode := VGAhi; InitGraph(GraphDriver, GraphMode, ''); if GraphResult <> grOK then begin WriteLn('Graphics mode 640x480x256 not supported'); Halt; end; SetTextStyle(DefaultFont, HorizDir, 1); OutTextXY(1, 10, 'Enter a value for Variable1:'); Variable1 := ''; ReadTextXY(1, 20, Variable1); OutTextXY(1, 30, 'Variable1 = '+Variable1); OutTextXY(1, 40, 'Hit Enter to continue...'); ReadLn; CloseGraph; end. [/code:1:b063aba922] en dit getest op Windows XP in een DOS box, en het werkt nog ook, graphics mode and all !!! (Had ik eerlijk gezegd niet gedacht dat dit nog zou werken in XP, zeker niet in graphics mode :)
Link naar reactie
Even nog 'n klein beetje mooier gemaakt (ik kon het niet laten) :D[code:1:3e8917704e]program ReadLn1; uses Graph, Crt; const Backspace = #8; Enter = #13; var GraphDriver: integer; GraphMode: integer; Variable1: string; procedure ReadTextXY(X, Y, MaxLen: byte; TextLabel: string; var S: string); var SLen: byte absolute S; SWidth: integer; SHeight: integer; CursorWidth: integer; Key: char; begin OutTextXY(X, Y, TextLabel); X := X + TextWidth(TextLabel); CursorWidth := TextWidth('_'); SWidth := TextWidth(S); SHeight := TextHeight(S); SetFillStyle(1, Black); repeat Bar(X, Y, X+SWidth, Y+SHeight); OutTextXY(X, Y, S+'_'); Key := ReadKey; case Key of Backspace: if Length(S) > 0 then begin SWidth := TextWidth(S)+CursorWidth; SLen := SLen - 1; end; ' '..'~', #128..#254: if SLen < MaxLen then begin S := S + Key; SWidth := TextWidth(S)+CursorWidth; end; end; until Key = Enter; end; begin GraphDriver := VGA; GraphMode := VGAhi; InitGraph(GraphDriver, GraphMode, ''); if GraphResult <> grOK then begin WriteLn('VGA graphics mode not supported'); Halt; end; Variable1 := ''; SetTextStyle(DefaultFont, HorizDir, 1); ReadTextXY(1, 10, 30, 'Enter a value for Variable1: ', Variable1); OutTextXY(1, 30, 'Variable1 = '+Variable1); OutTextXY(1, 50, 'Hit Enter to continue...'); ReadLn; CloseGraph; end.[/code:1:3e8917704e]
Link naar reactie
Ben hem aan het overtypen (btw ik gebruik TP7 niet 5.5 maar oke zoveel verschillen zijn er niet). Is er niet een standaard ReadTexXY opdracht in TP in Graphische mode? Vind ik beetje dom gedaan. Maar oke. Bij de 'nieuwste code' krijg ik mijn eigen foutmelding (VGA not supported); Als ik de grOK check weglaat, krijg ik 'Grapics not Initialized (Use InitGraph)' :-?
Link naar reactie
Ik vond alleen 5.5 gratis op de Borland website. Kweet niet of 7.0 ook inmiddels gratis is. Maar 't scheelt inderdaad niet veel. Waarom typ je t over??? Doe toch een copy&paste. Das toch veel sneller, en minder kans op typvouten :) [i:0644d4f3b9][color=green:0644d4f3b9]> Is er niet een standaard ReadTexXY opdracht in TP in Graphische mode? [/color:0644d4f3b9][/i:0644d4f3b9] Voor zover ik weet niet. De Graph unit is altijd een beetje een ondergeschoven kindje geweest.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in


×
×
  • Nieuwe aanmaken...