free pascal - chyba s ktorou som sa ešte nestretol...

Programovacie jazyky, rady, poradňa...
PitBull_4
Light Expert
Light Expert
Používateľov profilový obrázok
Príspevky: 65
Registrovaný: 26 nov 2009, 19:08
Kontaktovať používateľa:

free pascal - chyba s ktorou som sa ešte nestretol...

Príspevok od používateľa PitBull_4 »

Zdravím...

spravil som si soft... funguje ako má... lenže pracuje naraz v dosovskom a grafickom okne...

podľa jedného návodu na nete som sa pokúsil spojiť to do windowsáckeho okna... no píše mi to chybu:

Kód: Vybrať všetko

No way to get the console handle
čo to je pls?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

ukáž ten návod a svoj zdroják, z tohto sa ti moc poradiť nedá. Môžem ti jedine poslať tento link: http://community.freepascal.org:10000/b ... m_id=24092 kde máš písané čo to znamená
PitBull_4
Light Expert
Light Expert
Používateľov profilový obrázok
Príspevky: 65
Registrovaný: 26 nov 2009, 19:08
Kontaktovať používateľa:

Príspevok od používateľa PitBull_4 »

Návod bol tento:

Kód: Vybrať všetko

Pred tým ako napíšeš uses napíš {$APPTYPE GUI}
Do uses ešte pridaj windows
Po begin potom zadaj showwindow(getactivewindow,0);
nasl:

program nieco;
{$APPTYPE GUI}
uses windows, ..
.
.
begin
showwindow(getactivewindow,0);
.
.
end.

Potom by to malo fungovať.
keď odstránim tieto vecičky tak soft ide normálne... ale v oddelených oknách...
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

skôr som chcel vidieť či používaš write a(alebo) writeln príkazy (prípadne read a readln). Nemôžeš totiž pracovať s konzolou ak máš gui (a práve to píše tá chyba)
PitBull_4
Light Expert
Light Expert
Používateľov profilový obrázok
Príspevky: 65
Registrovaný: 26 nov 2009, 19:08
Kontaktovať používateľa:

Príspevok od používateľa PitBull_4 »

vynechal som textový súbor....

no stále to vypisuje...

prikladám zdroják:

Kód: Vybrať všetko

program textovy;
{$apptype GUI}
uses windows,crt,graph;
var  b,c,i,k,p,o,q:integer;
     GD,GM:smallint;
     g:char;
     riadok,h,vysledok:string;
     subor:text;

procedure generuj;
begin
OutTextXY(600,150,'Hadaj pojmy s tematikou Zivotneho prostredia');

assign(subor,'F:\Pascal_RP_Inf\zivprostredie.txt');
reset(subor);

end;

procedure sibenica;
begin
detectgraph(gd,gm);
initgraph(gd,gm,'C:\OVLADACE');

rectangle(200,600,600,650);
line(400,600,400,200);
line(400,250,450,200);
line(500,200,400,200);
line(500,200,500,250);
setcolor(3);
OutTextXY(400,100, 'SIBENICA');
reset(subor);
randomize;
b:=random(16);

end;

procedure cislo;
begin
case b of
1: riadok:='oteplovanie';
2: riadok:='pytliactvo';
3: riadok:='emisie';
4: riadok:='chko';
5: riadok:='populacia';
6: riadok:='clovek';
7: riadok:='organizmus';
8: riadok:='biocenoza';
9: riadok:='troposfera';
10: riadok:='biosfera';
11: riadok:='poda';
12: riadok:='horniny';
13: riadok:='ovzdusie';
14: riadok:='tanap';
15: riadok:='voda';
end;
end;

procedure riadky;
          begin
                                    vysledok:=riadok;

                                    for c:=1 to length(riadok) do begin

                                                                  if (c>1) and (c<length(riadok)) then begin delete(riadok,c,1);
                                                                                                             insert('*',riadok,c);
                                                                                                       end;
                                                                  end;

                                    OutTextXY(620,200,riadok);



                                    repeat
                                    g:=readkey;
                                    k:=k+1;
                                    for c:=1 to length(vysledok) do begin
                                                                  h:=copy(vysledok,c,1);
                                                                  if h=g then begin
                                                                              i:=i+1;
                                                                              delete(riadok,c,1);
                                                                              insert(h,riadok,c);
                                                                              p:=p+1;
                                                                              end;
                                                                    end;
                                                                  if p=0 then begin
                                                                              o:=o+1;
                                                                                     SetColor(LightRed);
                                                                                     if o=1 then circle(500,270,20);
                                                                                     if o=2 then FillEllipse(500,340,30,50);;
                                                                                     if o=3 then line(470,340,440,290);
                                                                                     if o=4 then line(530,340,560,290);
                                                                                     if o=5 then line(500,370,440,430);
                                                                                     if o=6 then line(500,370,560,430);
                                                                              end;
                                                                              p:=0;
                                                                              q:=200;
                                                                              q:=q+20;
                                    OutTextXY(620,q,riadok);

                                    until (o=6) or (vysledok = riadok);
                                    if  (vysledok = riadok) then begin
                                                                 textcolor(9);
                                                                 OutTextXY(620,q+20,'KONIEC!');
                                                                 end;
                                    if (vysledok <> riadok) then begin
                                                                 textcolor(9);
                                                                 OutTextXY(620,q+40,'KONIEC!')
                                                                 end;
                        close(subor);
                        end;



begin
ShowWindow(GetActiveWindow,0); 
cislo;
generuj;
sibenica;
riadky;

readkey;

end.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

stále tam write a writeln používaš (konkrétne ho zrejme používa CRT v outTextXY). Ak chceš robiť GUI, radšej by si mal siahnúť po niečom na to určenom, trebárs delphi (čo je objektovo orientovaný pascal)
PitBull_4
Light Expert
Light Expert
Používateľov profilový obrázok
Príspevky: 65
Registrovaný: 26 nov 2009, 19:08
Kontaktovať používateľa:

Príspevok od používateľa PitBull_4 »

audiotrack napísal:stále tam write a writeln používaš (konkrétne ho zrejme používa CRT v outTextXY). Ak chceš robiť GUI, radšej by si mal siahnúť po niečom na to určenom, trebárs delphi (čo je objektovo orientovaný pascal)
outtext je len vloženie nejakého text do obrázku nie?

PLS neviete, kde by som našiel presný popis GUI? Čo presne je tam zakázané a čo nie?

//autoeditácia príspevku ( 27 Nov 2009, 23:03 )
a chyba musí byť v niečo inom...

pretože aj keď zadám toto:

Kód: Vybrať všetko

program gui;
{$apptype GUI}
uses windows,crt,graph;
var  GD,GM:smallint;

begin
ShowWindow(GetActiveWindow,0);
detectgraph(gd,gm);
initgraph(gd,gm,'C:\Ovladace');


line(400,600,400,200);


readkey;

end.
tak to píše tú istú chybu...
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Skúšal si dať preč tú Crt knižnicu?
PitBull_4
Light Expert
Light Expert
Používateľov profilový obrázok
Príspevky: 65
Registrovaný: 26 nov 2009, 19:08
Kontaktovať používateľa:

Príspevok od používateľa PitBull_4 »

keď dám preč CRT, nemôžem mať v programe ani readkey... a teda neviem ako mám doň načítať údaje z klávesnice...
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

skús to exe spustiť z príkazového riadku a nezavre sa, alebo namiesto readkey môžeš skúsiť dať postupnosť príkazov:

Kód: Vybrať všetko

asm
xor  ah, ah   
int  16h
end;
PitBull_4
Light Expert
Light Expert
Používateľov profilový obrázok
Príspevky: 65
Registrovaný: 26 nov 2009, 19:08
Kontaktovať používateľa:

Príspevok od používateľa PitBull_4 »

spravil som to cez cyklus - for i:=1 to 100000

a teda vidím, čo sa robí...

len potrebujem nejako zadávať vstupy z klávesnice... a readkey nepodporuje, readln hlás chybu...
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Čiže bez tej crt knižnice to funguje, len je problém s tým vstupom?
PitBull_4
Light Expert
Light Expert
Používateľov profilový obrázok
Príspevky: 65
Registrovaný: 26 nov 2009, 19:08
Kontaktovať používateľa:

Príspevok od používateľa PitBull_4 »

jj, keď vyhodím crt tak ide.... grafické príkazy na kreslenie idú normálne..

len teraz neviem ako tam dám vstupy z klávesnice...

//autoeditácia príspevku ( 30 Nov 2009, 19:25 )
keď dám do programu read / readln tak mi nenájde žiadnu chybu... ale mi po spustení vyskočí okno:

Kód: Vybrať všetko

ERROR: 
Runtime error 103 at 0x00401A1
0x00401A1
0x00408CB9
program sa spustí, nakreslí to čo má, no hneď sa vypne a skočí to okno s tou chybou... ja vidím len záblesk z toho, čo sa nakreslí....
Napísať odpoveď