Pomoc s kodom (Delphi)

Programovacie jazyky, rady, poradňa...
Cicicok
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 296
Registrovaný: 13 júl 2004, 12:28
Bydlisko: Hlavná dedina SK N48 09.0
Kontaktovať používateľa:

Pomoc s kodom (Delphi)

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

Prosim Vas preco mi to mrzne? :cry:

Kód: Vybrať všetko

unit ulocha;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  Trieda = record
        meno: string;
        vek: integer;
  end;
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  ziak: array[1..10] of Trieda;
  Form1: TForm1;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var     t:textfile;
        i:integer;
        z:string;
begin
assignfile(t,'ludia.txt');
reset(t);
for i:=1 to 10 do begin
z:='';
ziak[i].meno:='';
while z<>' ' do begin
read (t,z);
ziak[i].meno:=ziak[i].meno+z;
end;
readln(t,ziak[i].vek);
end;
closefile(t);
end;
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 »

kôli tomu cyklu, načítaj do mena celý riadok

Kód: Vybrať všetko

procedure TForm1.Button1Click(Sender: TObject);
var     t:textfile;
        i:integer;
begin
assignfile(t,'ludia.txt');
reset(t);
for i:=1 to 2 do begin
readln(t,ziak[i].meno);
readln(t,ziak[i].vek);
end;
closefile(t);
end;
A ak potrebuješ iba po prvú medzeru, tak to potom uprav. Ale ťažko povedať, mal si ukázať ako vypadá tvoj testovaný súbor ludia.txt
zaggi
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 314
Registrovaný: 04 feb 2007, 19:32

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

(offtopic) omg ludia nikto vas neucil pouzivat tabulatory? za takyto zdrojak v skole nafleku 0 bodov aj keby fungoval
Cicicok
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 296
Registrovaný: 13 júl 2004, 12:28
Bydlisko: Hlavná dedina SK N48 09.0
Kontaktovať používateľa:

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

Sorry takto vyzera ten file ludia.txt

Kód: Vybrať všetko

miro 15
lincoln 41
aviator 46
corvette 21
bmw 760
mondeoIII 15
banan 84
alinko 45
pipina 65
teta_margit 12
meno ma nacitat do jedneho a vek do druheho
juho
Star
Star
Používateľov profilový obrázok
Príspevky: 551
Registrovaný: 11 máj 2007, 21:16

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

zaggi napísal:(offtopic) omg ludia nikto vas neucil pouzivat tabulatory? za takyto zdrojak v skole nafleku 0 bodov aj keby fungoval
no a to v akej skole, ty KACO?
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 »

Cicicok napísal:Sorry takto vyzera ten file ludia.txt

Kód: Vybrať všetko

miro 15
lincoln 41
aviator 46
corvette 21
bmw 760
mondeoIII 15
banan 84
alinko 45
pipina 65
teta_margit 12
meno ma nacitat do jedneho a vek do druheho
v tom prípade by si to mohol spraviť napríklad takto:

Kód: Vybrať všetko

procedure TForm1.Button1Click(Sender: TObject);
var     t:textfile;
        pom:string;
        i:integer;
begin
  assignfile(t,'ludia.txt');
  reset(t);
  i:=1;
  while not(eof(t)) do begin
    readln(t,pom);
    ziak[i].meno:=copy(pom,1,pos(' ',pom)-1);
    ziak[i].vek:=strtoint(copy(pom,pos(' ',pom),length(pom)-pos(' ',pom)));
    inc(i);
    if i=11 then break;
  end;
  closefile(t);
end;
je to cez cyklus while a nie for, lebo by si sa nemal spoliehať na to, že tam bude naozaj presne 10 údajov. Preto prečíta všetko (to je to while not(eof(t)) to znamená že bude robiť nasledujúce príkazy kým nepríde na koniec súboru) ale maximálne však 10. Ak je i=11 tak sa preruší cyklus, lebo nemôžeme zapisovať do 11 prvku keď ich máme len 10
q-parser
Professional
Professional
Používateľov profilový obrázok
Príspevky: 1410
Registrovaný: 04 dec 2004, 16:48
Bydlisko: /dev/null
Kontaktovať používateľa:

Príspevok od používateľa q-parser »

juho napísal:no a to v akej skole, ty KACO?
To zavisi od ucitela. 0 bodov je drsne riesenie, osobne by som za to nejaky ten bodik urcite stiahol a za nepritomnost komentarov tiez. Kod je tak neprehladny, a ked sa clovek k nemu po case vrati, tak to nejaky cas trva, kym zisti, co vlastne robi a kde sa to, ci ono realizuje.
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 »

q-parser napísal:To zavisi od ucitela. 0 bodov je drsne riesenie, osobne by som za to nejaky ten bodik urcite stiahol a za nepritomnost komentarov tiez. Kod je tak neprehladny, a ked sa clovek k nemu po case vrati, tak to nejaky cas trva, kym zisti, co vlastne robi a kde sa to, ci ono realizuje.
v prípade 10 riadkov práve komentáre zneprehladňujú
zaggi
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 314
Registrovaný: 04 feb 2007, 19:32

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

audiotrack napísal:v prípade 10 riadkov práve komentáre zneprehladňujú
idealne komentare su java style, cize kratke funkcie a pred kazdou komentar co robi, co do nej vstupuje, co vracia ... a do zdrojaku len malo, tam to ozaj obcas zavadzia ... ale tabulatory musia byt

btw nepovedal som ze 0 bodov, proste ti to nezoberie ...
Bobr
Guru
Guru
Používateľov profilový obrázok
Príspevky: 2952
Registrovaný: 02 mar 2005, 12:35
Bydlisko: Bratislava

Delphi sachovnica

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

potrebujem naprogramovat sachovnicu :D vite niekto pomocou rectangle ?
morfeusko
Medium Star
Medium Star
Príspevky: 395
Registrovaný: 19 mar 2008, 15:21
Bydlisko: Nitra
Kontaktovať používateľa:

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

TU sachovnicu som robil aj ja pred par rokmi...mozno to este dakde vyhrabem :D
Bobr
Guru
Guru
Používateľov profilový obrázok
Príspevky: 2952
Registrovaný: 02 mar 2005, 12:35
Bydlisko: Bratislava

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

morfeusko napísal:TU sachovnicu som robil aj ja pred par rokmi...mozno to este dakde vyhrabem :D
to by bolo super moc by si mi pomohol:)
morfeusko
Medium Star
Medium Star
Príspevky: 395
Registrovaný: 19 mar 2008, 15:21
Bydlisko: Nitra
Kontaktovať používateľa:

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

tak tu to mas...este ze mam dnes slabu chvilku :?

Kód: Vybrať všetko

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var pocet,kod,c,a,b,d,e,f,g,p: integer;
    edit: string;
begin
edit:=Edit1.Text;
val(edit,pocet,kod);
if kod<>0 then ShowMessage('Nezadali ste èíslo!') else begin
b:=600 div pocet;
g:=1;
f:=0;
d:=1;
p:=0;
  for c:=1 to pocet do begin
    for e:=1 to pocet do begin
      a:=(e*b)-b;
      if e=1 then a:=0;
        if pocet mod 2=0 then
        if (d+p) mod 2 =0 then image1.Canvas.Brush.Color:=clWhite else
                          image1.Canvas.Brush.Color:=clBlack
                          else
         if d mod 2 =0 then image1.Canvas.Brush.Color:=clWhite else
                          image1.Canvas.Brush.Color:=clBlack;
      image1.Canvas.Rectangle((f*b),a,(g*b),(e*b));
      image1.Canvas.Brush.Color:=clBlack;
      d:=d+1;
      end;
      inc(f);
      inc(g);
      if pocet mod 2=0 then inc(p);
  end;
end;
end;

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 »

dá sa to aj trochu efektívnejšie:

Kód: Vybrať všetko

procedure TForm1.vytvorsachovnicu;
var i,j,x,y:integer;
cierna:boolean;
begin
image1.Canvas.pen.color:=clBlue;
  for I:=1 to 8 do begin
    image1.Canvas.MoveTo(i*25,0);
    image1.canvas.LineTo(I*25,image1.Height);
    image1.Canvas.MoveTo(0,i*25);
    image1.canvas.LineTo(image1.Width,i*25);
  end;
 y:=0;
 x:=0;
 for I:=0 to 63 do begin
   if cierna then image1.Canvas.brush.color:=clBlack else Image1.canvas.brush.color:=clWhite;
   Image1.Canvas.FloodFill(x,y,clwhite,fssurface);
   x:=x+26;
   if x>200 then begin
      x:=0;
      y:=y+26;
      cierna:=not(cierna);
      end;
   cierna:=not(cierna);
   end;
 end;
Bobr
Guru
Guru
Používateľov profilový obrázok
Príspevky: 2952
Registrovaný: 02 mar 2005, 12:35
Bydlisko: Bratislava

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

audiotrack napísal:dá sa to aj trochu efektívnejšie:

Kód: Vybrať všetko

procedure TForm1.vytvorsachovnicu;
var i,j,x,y:integer;
cierna:boolean;
begin
image1.Canvas.pen.color:=clBlue;
  for I:=1 to 8 do begin
    image1.Canvas.MoveTo(i*25,0);
    image1.canvas.LineTo(I*25,image1.Height);
    image1.Canvas.MoveTo(0,i*25);
    image1.canvas.LineTo(image1.Width,i*25);
  end;
 y:=0;
 x:=0;
 for I:=0 to 63 do begin
   if cierna then image1.Canvas.brush.color:=clBlack else Image1.canvas.brush.color:=clWhite;
   Image1.Canvas.FloodFill(x,y,clwhite,fssurface);
   x:=x+26;
   if x>200 then begin
      x:=0;
      y:=y+26;
      cierna:=not(cierna);
      end;
   cierna:=not(cierna);
   end;
 end;
nejako to nefachci:( spravi to sachovnicu ale celu ciernu z modrymi ciarami...ja by som to potreboval tak ze cierny stvorec bieli stvorec 8x8 z velkostou strany A, a cez rectangle...
morfeusko
Medium Star
Medium Star
Príspevky: 395
Registrovaný: 19 mar 2008, 15:21
Bydlisko: Nitra
Kontaktovať používateľa:

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

keby si skusil ten moj kod ten ide.... :?
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 »

ten kod ide, ak ti nevykresluje striedavo farby, treba za begin nastaviť log. premennú (cierna:=false; alebo cierna:=true; podla toho akou farbou chceš začínať)
Keď to malo byť cez rectangle, tak sorry, som si nevšimol
Napísať odpoveď