Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Promjenuti aplikaciju sa pointerima

[es] :: Pascal / Delphi / Kylix :: Promjenuti aplikaciju sa pointerima

[ Pregleda: 3478 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

query
NL

Član broj: 51311
Poruke: 30
*.upc-j.chello.nl.



Profil

icon Promjenuti aplikaciju sa pointerima28.05.2005. u 19:58 - pre 228 meseci
Aplikaciju sam napravila bez pointer-a i radi, ali za skolu treba da izmjenim sve koristeci pointere. Dodala sam aplikaciju kao zipfile. Verzija Delphi-a je 6.

Nadam se da mi neko moze pomoci.

Unaprijed hvala.
Prikačeni fajlovi
 
Odgovor na temu

bancika
Branislav Stojkovic

Član broj: 24844
Poruke: 631
*.vdial.verat.net.

Sajt: www.diy-fever.com


+1 Profil

icon Re: Promjenuti aplikaciju sa pointerima29.05.2005. u 21:36 - pre 228 meseci
Lepo je to, samo gde ubaciti pointere?
Mozes ti umesto svakog tipa da stavis npr ^Integer pa posle da koristis ^promenljiva, ali ne verujem da si na to mislila :)
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
217.119.242.*



+62 Profil

icon Re: Promjenuti aplikaciju sa pointerima02.06.2005. u 15:21 - pre 228 meseci
Kako gde, pa ima record-e, cak i array of records, zar ne?
Medjutim, zamena record-a, i record array-a pointerima na iste zahteva dobro poznavanje pointera. A sem toga, u ovom projektu ima bas podosta posla oko toga, tako da...

Rajko

P.S. 'Aj napisacu sutra uopsteno kako se koriste pointeri pri radu sa record-ima. Ili vise nije aktuelno ovo pitanje...?
 
Odgovor na temu

query
NL

Član broj: 51311
Poruke: 30
*.upc-j.chello.nl.



Profil

icon Re: Promjenuti aplikaciju sa pointerima02.06.2005. u 18:16 - pre 228 meseci
Evo napravila sam sve sa pointerima, ali imam mali problemcica.
Nadam se da ce neko htjeti da pogleda na ovaj zipfile i pomogne mi, stvarno bi mu bila zahvalna.

Nego problem je sljedeci:
Dodajem novi podatak za dvd-e i kazem ok. Vrati mi se u prethodni formular i doda mi novi podatak, ali odjednom mi zamjeni npr. prvi i drugi record.
Malo je tesko objasniti, ali evo malo nekih podataka:
lista
----------
a
b

Odem na Dodaj podatak [Toevoegen] i recimo ubacim sljedeci podatak npr. slovo d
i [OK]. Vratim se na prethodni formular gdje mi je lista dobijem sljedeci raspored:
Lista
-----
b
b
c

Znaci doda mi ovo slovo c, ali mi zamjeni slovo a sa b.

Rezulat treba da je:
lista
----
a
b
c

A jesam zapetljala, ali nadam se da ce me neko skontati.

Unaprijed hvala.
Prikačeni fajlovi
 
Odgovor na temu

query
NL

Član broj: 51311
Poruke: 30
*.upc-j.chello.nl.



Profil

icon Re: Promjenuti aplikaciju sa pointerima03.06.2005. u 17:48 - pre 228 meseci
Ima li ovdje ljudi sto se bave sa Delphi-om i hoce pomoci?
Ovdje mi je izgleda problem:
Code:
    
lnpNewNode^.lnpPrevious := lnpFront^.lnpPrevious;
lnpFront^.lnpPrevious^.lnpNext := lnpNewNode;
lnpNewNode^.lnpNext := lnpFront;
lnpFront^.lnpPrevious := lnpNewNode;


Sta nije u redu sa ovim kodovima?

Unaprijed hvala.
 
Odgovor na temu

Toyo

Član broj: 45193
Poruke: 227
*.kovnet.co.yu.



+1 Profil

icon Re: Promjenuti aplikaciju sa pointerima04.06.2005. u 11:12 - pre 228 meseci
Ajde da ti ja malo pomognem.

Promeni sledecu proceduru ovako:
Code:

procedure TfrmAddChangeDvd.btnOKClick(Sender: TObject);
begin
  crDvd.sTitle := edtTitel.Text;
  crDvd.iReleaseYear := StrToInt(edtJaar.Text);
  crDvd.sActor := edtHoofdrolspeler.Text;
  crDvd.iRunTime := StrToInt(edtSpeelduur.Text);
  crDvd.iZone := StrToInt(edtZoneNummer.Text);
  crDvd.sDescription := mmOmschrijving.Text;
  if toevoegen then
    begin
      untDvdData.AddDvds(crDvd);
      ClearFields;
      Close
    end
  else
    begin  
      untDvdData.DeleteCurrentDvd;
      untDvdData.AddDvds(crDvd);
      ClearFields;
      Close
    end;
end;


Zatim imas gresku prilikom ispisa forme. Iz datoteke ti se ucitavaju 3 sloga a ti ispisujes samo 2. Ta 3 sloga su bila a b b a ti si videla samo a b. Kada si dodala novi elemenat ispisao se i onaj drugi b sto nisi videla da uopste postoji.
Problem u toj proceduri je bio u tome da je while petlja izlazila iz ispisa, kada je dosla do zadnjeg elementa a njega nije ispisala. Promeni proceduru ovako:
Code:

procedure TfrmDVDMngr.ShowForm(Sender :TObject);
var
  sDvdInfo : String;
  iCurrent: Integer;
begin
  iCurrent := lstbxDVD.ItemIndex;
  lstbxDVD.Clear;
  untDvdData.MoveFirst;
  while not untDvdData.EndOfList
  do begin
    untDvdData.GetCurrentDvd(crDvd);
    sDvdInfo := 'Titel:' + ' ' + crDvd.sTitle + '  ' +
                'Jaar van uitgave:' + ' ' + IntToStr(crDvd.iReleaseYear) + '  ' +
                'Hoofdrolspeler:' + ' ' + crDvd.sActor + '  ' +
                'Speelduur:' + ' ' + IntToStr(crDvd.iRunTime) + '  ' +
                'ZoneNummer:' + ' ' + IntToStr(crDvd.iZone);
    lstbxDVD.Items.Add(sDvdInfo);
    untDvdData.MoveNext
  end;
  if untDvdData.NrOfDvds  > 0 then
    begin
      untDvdData.GetCurrentDvd(crDvd);
      sDvdInfo := 'Titel:' + ' ' + crDvd.sTitle + '  ' +
                'Jaar van uitgave:' + ' ' + IntToStr(crDvd.iReleaseYear) + '  ' +
                'Hoofdrolspeler:' + ' ' + crDvd.sActor + '  ' +
                'Speelduur:' + ' ' + IntToStr(crDvd.iRunTime) + '  ' +
                'ZoneNummer:' + ' ' + IntToStr(crDvd.iZone);
      lstbxDVD.Items.Add(sDvdInfo);
    end;
  untDvdData.MoveTo(iCurrent);
end;



Ne znam zasto si radila sa cirkularnom dvostruko povezanom listom.
Dosta ti je samo First i First^.Next. Znaci jednostruka lista koja se zavrsava kada je Current = nil

Ja bih to sve uradio od pocetka. Nesto mi smrdi da tu ima jos gresaka.

E, da kada dodas novi element, mora da osvezis listu, da bi se on prikazao.
Nadam se da sam ti malo pomogao. :)

Pozdrav.
 
Odgovor na temu

query
NL

Član broj: 51311
Poruke: 30
*.upc-j.chello.nl.



Profil

icon Re: Promjenuti aplikaciju sa pointerima04.06.2005. u 15:54 - pre 228 meseci
Hvala ti stvarno mnogo na objasnjenju. Bar neko da se smilovao i posvetio paznju mom problemu. :-)
Sad cu pokusati promjenuti i nadam se da ce raditi.

Jos jednom hvalaaaaaaaaaaa.

 
Odgovor na temu

query
NL

Član broj: 51311
Poruke: 30
*.upc-j.chello.nl.



Profil

icon Re: Promjenuti aplikaciju sa pointerima04.06.2005. u 19:04 - pre 228 meseci
E super sve radi. Samo gdje da ubacim funkciju Smaller? Treba da mi alfabetski sortira.

Unaprijed hvala.
 
Odgovor na temu

Toyo

Član broj: 45193
Poruke: 227
*.kovnet.co.yu.



+1 Profil

icon Re: Promjenuti aplikaciju sa pointerima05.06.2005. u 12:57 - pre 228 meseci
Sortiranje bi trebalo da se vrsi prilikom ubacivanja novog clana.
Znaci ides nekako ovako:

tmp:= lnpfront
tmp := pozicija ispred prvog veceg.
promenis sve u funkciji za ubacivanje iz lnpFront u tmp. Znaci da se ne ubacuje na kraj vec iza elementa na koji pokazuje tmp.

 
Odgovor na temu

query
NL

Član broj: 51311
Poruke: 30
*.upc-j.chello.nl.



Profil

icon Re: Promjenuti aplikaciju sa pointerima05.06.2005. u 16:28 - pre 228 meseci
@Toyo, stvarno ti hvala.
Napravila sam ovu proceduru, ali nesto mi previse velika.
Code:

procedure Sorteren (crDVD: TDvdRecord);
var
  lnpNewNode,
  lnpOldNode: TListNodePtr;
  toegevoegd: boolean;
begin
    toegevoegd := false;
    lnpOldNode := lnpFront;
    lnpNewNode := lnpFront;
    repeat
     if lnpNewNode = nil
     then begin
      //dodati na kraju
       new(lnpNewNode);
       lnpNewNode^.drDVD := crDVD;
       lnpNewNode^.lnpNext := nil;
       if lnpFront = nil
       then
         lnpFront := lnpNewNode //ako je prazna lista
       else lnpOldNode^.lnpNext := lnpNewNode;
        toegevoegd := true
       end
     else if lnpNewNode^.drDVD.sTitle > crDVD.sTitle
      then begin  //mjesto pronadjeno, sada dodati
        if lnpNewNode <> lnpOldNode
         then
          begin
           new (lnpNewNode);
           lnpNewNode^.drDVD := crDvd;
           lnpNewNode^.lnpNext := lnpOldNode^.lnpNext;
           lnpOldNode^.lnpNext := lnpNewNode;
      end
     else begin //dodati na prvo mjesto
       new(lnpNewNode);
       lnpNewNode^.drDVD := crDVD;
       lnpNewNode^.lnpNext := lnpOldNode;
       lnpFront := lnpNewNode
     end;
     toegevoegd:=true;
     end
     else begin //veci je pronadjen, sad proci kroz listu
       lnpOldNode := lnpNewNode;
       lnpNewNode := lnpNewNode^.lnpNext;
     end
    until toegevoegd;
end;

I ako je ubacim u Add proceduru za novi record, javlja mi error.

Dali je ovo pretjerano sto sam napravila. Mozda ima nesto na laksi nacin?

Jos jednom hvala. :-)

 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Promjenuti aplikaciju sa pointerima

[ Pregleda: 3478 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.