Keresés

Részletes keresés

NevemTeve Creative Commons License 2009.07.30 0 0 693
Hát, ha ez aggaszt, feldolgozás után ürítsd ki a fájlt-
Előzmény: Vgyuri (692)
Vgyuri Creative Commons License 2009.07.30 0 0 692
Nem tragédia, ha 1-1 rekord elvész, de inkább a fordítottja igaz jelenleg. 2 mp-enkénti új adatnál, még 0,777 mp-es késleltetéssel is visszaér a program a lekérdezéshez 1 mp-en belül, ilyenkor ugyanazt a rekordot 2x dolgozza fel és kétszer pittyeg a térképen ugyanazon a helyen. (Ez egy navigációs-mozgótérképes  program, csak a soros portok kezelésére írni kellett egy külső programot, mert a régi csak a fizkai COM1 és COM2 portról tud olvasni, az meg az újabb notebookokon nincs.)
Előzmény: NevemTeve (691)
NevemTeve Creative Commons License 2009.07.30 0 0 691
Nem fognak rekordok elveszni ezzel a módszerrel?
Előzmény: Vgyuri (687)
NevemTeve Creative Commons License 2009.07.30 0 0 690
Igen, de ha kétségeid vannak, a Ctrl+F1 lenyomása is sokat segít;)
Előzmény: Vgyuri (689)
Vgyuri Creative Commons License 2009.07.30 0 0 689

Jól értem?

 

Művelet= a példában a reset(nf)?

 

Az IOresult egy függvény, aminek az értéke 0, ha rendben végrehajtódott a reset és a DOS hibakód, ha nem? 

Előzmény: NevemTeve (688)
NevemTeve Creative Commons License 2009.07.30 0 0 688
{$I-}
művelet
{$I+}
IOResult vizsgálata
Előzmény: Vgyuri (687)
Vgyuri Creative Commons License 2009.07.30 0 0 687

Szervustok

 

Olyankor szoktam itt felbukkanni, amikor valami nagy bajom van, mint most. Bele kellene nyúlnom egy 10 évvel ezelőtt más által írt programba, de az én primitív Pascal ismereteim kevesek, ezért az egy dologért meg nem akarok már egy ilyen nagy dolgot megtanulni.

 

A feladat: van egy fájl, amit egy másik program gyárt a soros vonal bemenetből (GPS NMEA file), amikor egy-egy rekordot hozzáír 1-2 másodpercenként, azonnal becsukja, tehát az idő 98%-ában zárva van. Mindíg csak az utolsó rekord van benne.

 

Van egy másik program, amelyik ki akarja olvasni a mindenkori utolsó rekordot és aztán elszalad vele feldolgozni. Eddig is volt a programban egy olyan funkció, ami hosszú ilyen fájlokat dolgozott fel soronként, míg a végére ért. Akkor előlről kezdte.

 

Most persze egy sor a fájl és ha kész a feldolgozás, visszamegy reset(nf) utasítással ennek az elejére. Az esetek 99%-ában ezt meg is tudja csinálni, mert a fájl az adott pillanatban olvasható. Nagy ritkán viszont a másik, a beleíró program fogja, mert még nem zárta vissza. Iyenkor azt kellene csinálnia, hogy némi késltetéssel próbálja újra, de ehellyett Runtime error 05 hibával elszáll. Én ezt csináltam

 

ujra:

delay(777); {Azért ennyi, hogy több kör után se jöjjön ki egész másodperc)

reset(nf);

if doserror>0 then goto ujra;

 

Ez persze nem működik, mert a doserror-os sorhoz már nem jut el a futás, hamarabb kiakad.

 

Hogy kellene ezt szabályosan csinálni. Gondolom valaghogy elkell venni a programtól a dos hibakezelést és előzőleg ellenőrízni a fájl állapotát, és ha nem nyitható meg, akkormenni vissza. De hogyan lehet ezt csinálni. Megnéztem a FindFirst parancsot, de a könyvből nem derül ki, hogy a meg nem nyitható fájlra mit mond, egyszerű lenne, ha nem találná meg és kész.

 

Segítsen, aki tud.

NevemTeve Creative Commons License 2009.07.23 0 0 686
Megnézi, javítja, kinyomtatja – nem tudom, de nem is érdekel: ha ő azt írja, hogy 'megnyitni' szeretné, akkor én megmondom, hogyan tudja megnyitni... majd ha azt kérdezi, hogyan tudja futtatni, akkod válaszolok arra...
Előzmény: Törölt nick (685)
Angyalpepe Creative Commons License 2009.07.23 0 0 684

Végre sikerült!!!!

Köszönöm NevemTeve!!!

Előzmény: Angyalpepe (683)
Angyalpepe Creative Commons License 2009.07.23 0 0 683

Sajnos nem sikerült, pontosabban az még ment megkerestem ezt a Destination dick-et, ráütöttem, ennyi. És most? :S

ghoezeke mate Creative Commons License 2009.07.22 0 0 682
A readkey segítségével bármely billentyű elővizsgálata elvégezhető, és a rossz érték elvethető.

Előzmény: Joeyboy18 (678)
NevemTeve Creative Commons License 2009.07.22 0 0 681
> Az a problémám, hogyha irok egy programot akkor az egy .pas kiterjesztésű fájl lesz.

Igaz

> Ezt azonban nem tudom megnyitni másik számítógépen, valamint ezen is csak a Turbo Pascallal.

Nem igaz, tetszőleges szövegszerkesztővel is.

> Kérlek titeket segítsetek, hogy mit kell csinálnom a programmal amit írtam, hogy futtatható legyen!

*.EXE-t kell belőle csinálnod: Options/Destination:Disk menüpontot keresgélj!
Előzmény: Angyalpepe (680)
Angyalpepe Creative Commons License 2009.07.22 0 0 680

Sziasztok!

 

Egy eléggé kezdő Turbo Pascalos vagyok, valamint az informatikai ismereteim is hiányosak, ezért kérlek titeket legyetek megértőek.

 

Az a problémám, hogyha irok egy programot akkor az egy .pas kiterjesztésű fájl lesz. Ezt azonban nem tudom megnyitni másik számítógépen, valamint ezen is csak a Turbo Pascallal.

 

Kérlek titeket segítsetek, hogy mit kell csinálnom a programmal amit írtam, hogy futtatható legyen!

Köszi

 

 

Sánta Kutya (SK) Creative Commons License 2009.06.26 0 0 679
Erre való a repeat... until hátultesztelő ciklus. Először kiírod a képernyőre, hogy mit vársz a felhasználótól, aztán beolvasod az adatot, és utána ellenőrzöd. Ha nem bírt a szerencsétlen eltalálni az [1,5] intervallumot, akkor kap egy ismételt tájékoztatást, és újból írhatja be. illik tesztelni a saját programodat különféleképpen elrontott adatokkal.
Előzmény: Joeyboy18 (678)
Joeyboy18 Creative Commons License 2009.06.26 0 0 678
nem hanem, tudod megcsináltam az iskolai átlagot, csak én ugy csináltam meg hogy akármilyen számot beirunk azoknak kiszámolja az átlagát. de nekem ugy kellene még ezt a progit megváltoztatnom hogy ne fogadjon el bármely számot, hanem csak 1-5-ig.mivel hogy 6-os jegy már nincs.ezt hogy kellene megcsinálni?
a 663-mashozzászólásnál megtod nézni hogyan kezdtem el.abban mit kell átirni hogy csak 1-5 ig fogadja el a számokat.?
Előzmény: srf (677)
srf Creative Commons License 2009.06.26 0 0 677
Mi lenne, ha a program megvizsgálná, hogy a beadott szám 1 és öt közé esik é?
És ha nem, visszaszólna, hogy rossz számot kapott. Én így csinálnám pl.
Előzmény: Joeyboy18 (676)
Joeyboy18 Creative Commons License 2009.06.26 0 0 676
Hali! Még annyi kellene a progihoz hogy csak 1-5ig fogadja el a számokat,mert ugye 6-os jegy nincsen.tehát ne engedjen beirni más számot csak 1-5-ig.Ezt hogy kellene megcsinálni?előre is köszi a segitséget.
Joeyboy18 Creative Commons License 2009.06.14 0 0 675
Hali!Köszi mindenkitől a segítséget!
Sánta Kutya (SK) Creative Commons License 2009.06.14 0 0 674
(665)
Előzmény: Törölt nick (673)
Törölt nick Creative Commons License 2009.06.14 0 0 673
kb így valahogy, ha jól rémlik:

myFile : Text;
x : Real;
x := 2.5;
Assign(myFile,'C:fajlnev.txt'); {hozzarendeled a fajlt a valtozodhoz}
Rewrite(myFile); {megnyitod a fajlt irashoz}
Writeln(myFile,'duma, duma es duma'); {irsz egy sort a fajlba}
Writeln(myFile,'x erteke: ', x ); {adatot irsz a fajlba}
Close(myFile); {a vegen lezarod a fajlt}

de egy kis fáratsággal utána tudnál nézni, csak keresni kellene.
Előzmény: Joeyboy18 (672)
Joeyboy18 Creative Commons License 2009.06.14 0 0 672
oké már megcsináltam a progit,már tökéletesen működik,csak még egy gondom van hogy hogyan mentse el a fájlba amit kiszámol a progi?köszi az eddigi segitséget.
Előzmény: kisspetya (671)
kisspetya Creative Commons License 2009.06.14 0 0 671
Viccelsz? Ha ész nélkül csak bemásoltad, persze, hogy hibát fog kiírni. A MAXTANULO meg a MAXOSZTALY is konstans, előtte nem árt deklarációban valami értéket adni nekik.
De ahogy más is írta, ide teljes programkódot senki nem fog beírni. Amit írtam az csak egy ötlet volt, amin vagy elindulsz, vagy kitalálsz jobbat.
Programozni nem lehet megtanulni 2 nap alatt. Ha ennyire el vagy maradva, miért nem szántál rá több időt?
Előzmény: Joeyboy18 (669)
Törölt nick Creative Commons License 2009.06.14 0 0 670
általában nem elég mechanikusan csak bemásolni a kódrészletet, hanem a program többi részét is hozzá kell faragni ami kapcsolatos a megváltoztatott részlettel.

menut úgy alakitasz ki hogy kiírtatod pl.:
- 1: adatbevitel
- 2: osztály statisztika
- 3: iskola statisztika
- 4: adatok mentése
- 0: kilépés
aztán bekérsz egy számot a fehasználótól hogy melyiket válassza, és ezen változó értékétől függően (Case..Of) hívod meg az adott programrészt.

(de ha ezt se tudod akkor elég kilátástalan vállalkozás így, bizonyára ezért sem fáradnak a többiek további felvilágosítással).
Előzmény: Joeyboy18 (669)
Joeyboy18 Creative Commons License 2009.06.13 0 0 669
És ezeket amit irtál hova kell beilleszteni vagy mit kell kicserélni ezekre?Mert akárhova beillesztem hibát ir ki. Meg próbálnám megcsinálni azt hogy az ne csak az osztály átlagát számolja ki hanem az egész iskoláét.ugy hogy bevezetek egy új változót pl: 'e'
és hogy ez legyen az iskola átlaga., de ennél is mindig kiir egy hibát.Meg nem tudom azt se elérni hogy külön kérje a féléves átlagot be és az év végit.Mert igy csak egy átlagot kér, nem tudom hogy lehet több menüt kialakitani hogy külön félévest+év végit is számoljon.mert ahova ki van irva az osztály átlag és létszám, oda hiába próbálom tovább irni, hogy még az A és a B osztályok átlagát is számolja ki,nem engedi.Ezt hogy lehet hogy külön azt is számolja ki?És hogy kérje be külön a féléves és az éves átlagot is?
Előzmény: kisspetya (664)
srf Creative Commons License 2009.06.12 0 0 668
Csak a gyávák dolgoznak úgy.

A bátrak egyből a közepébe vágnak, menet közben alkalmazkodnak a felmerülő problémákhoz. Nem félnek a munkától, ha kell százszor is újrakezdik. A trial-error módszer élő képviselői ők, kik munkásságukkal egyben a backtrack algoritmust is szemléltetik. Dokumentációt sem készítenek, ha később változtatás, vagy probléma lép fel, hősiesen megint nekiesnek a programozásnak. Nem restek a kereket újra felfedezni, és másnak is megadják ezt az örömet...

:)
Előzmény: NevemTeve (667)
NevemTeve Creative Commons License 2009.06.12 0 0 667
Egy lehetséges módszer az is, hogy először pontosan meghatározzuk, hogy mit is kell csinálni, utána megtervezzük a tárolandó adatokat és a programot, és csak amikor ez készen van, akkor esünk neki a billentyűzetnek...
Törölt nick Creative Commons License 2009.06.12 0 0 666
nem tudom szükséges e (van e értelme) a tanulók átlagait eltárolni, de ha nem, akkor annyival egyszerűbb/átláthatóbb a dolgod hogy a tanulókhoz csak egytelen tömb kell a Beolvasás függvényedbe. e függvény végén aztán kiszámolod az osztályátlagot, megszámlálod a kitünök és bukottak számák és csak ezeket tárolod el recordként egy 2 dimenziós tömbe (kb. mint Kisspetyánál: 4év * 2félév).

aztán már csak ezekből a feltöltött az osztálytömbökből kell kiszámolnod/kiíratnod a szükséges jelentéseket.
fájlkezelésnek meg utána tudsz nézni ha még nem tanultátok volna:
http://pascalprogramming.byethost15.com/lesson9.php
Sánta Kutya (SK) Creative Commons License 2009.06.12 0 0 665
Kipróbáltam: ha rákeresek az assign pascal szavakra (idézőjel nélkül), és magyarra állítod a nyelvet a Google-ban, akkor kapásból sok okosságot találsz a filekezelésről. Hajrá!
Előzmény: Joeyboy18 (663)
kisspetya Creative Commons License 2009.06.12 0 0 664
Elég zavaros a specifikációd, de ettől biztos bonyolultabb adatszerkezetre lesz szükséged. Csak egy ötlet:


type
TTanulok = array [1..MAXTANULO] of Real;

TNaplo = record
Letszam: Byte;
Tanulok: TTanulok;
{saját ízlés szerint iderakhatod azon változókat is, amiket ugye a *programod* számol ki:}
Bukottak, Kitunoek: Byte;
OsztAtlag: Real;
end;

var
Osztalyok: array [1..MAXOSZTALY, 1..4, 1..2] of TNaplo;


ahol 1..4 a négy év, 1..2 a két félév


hivatkozás a 13. gyerek átlagára a 3. osztályban a 4. év 2. félévében:
x := Osztalyok[3, 4, 2].Tanulok[13];
Előzmény: Joeyboy18 (663)
Joeyboy18 Creative Commons License 2009.06.11 0 0 663
Na elkezdtem csinálni de eddig jutottam el.Hogyan kellene tovább folytatnom hogy el is mentse egy fáljba ezeket.és hogy külön kérje hogy féléves vagy éves átlagot adjak meg.meg még az évek összehasonlitását nem tudom hogy hogyan kellene megcsinálni.valaki tudna nekem ebben segiteni?előre is köszönöm.
Itt a program ami készen van eddig.:

program iskolaatlag;

uses Crt;

type TNaplo = array[1..50] of real;

var A_oszt, B_oszt: Tnaplo;

A_letsz, B_letsz: integer;

procedure Beolvas(var Oszt: Tnaplo; var Letsz: integer);

var i: integer;

begin

Write('Hány tanuló van: ');

readln(Letsz);

for i := 1 to Letsz do

begin

Write('Az ',i,'. átlaga: ');

ReadLn(Oszt)

end;

WriteLn;

end;

function Atlag(Oszt: Tnaplo; Letsz: integer): real;

var i: integer;

sum: real;

begin

sum := 0;

for i := 1 to Letsz do

sum := sum + Oszt;

Atlag:= sum / Letsz

end;

begin

ClrScr;

WriteLn('Irja be az A osztály tanulóinak átlagait: ');

Beolvas(A_oszt, A_letsz);

WriteLn('Irja be az B osztály tanulóinak átlagait: ');

Beolvas(B_oszt, B_letsz);

WriteLn('Az A osztály átlaga: ', Atlag(A_oszt, A_letsz):4:2 );

WriteLn( 'A B osztály átlaga: ', Atlag(B_oszt, B_letsz):4:2 );

ReadKey;

end.

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!