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

DAT File ucitati (Delphi)

[es] :: Pascal / Delphi / Kylix :: DAT File ucitati (Delphi)

[ Pregleda: 3100 | Odgovora: 11 ] > 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 DAT File ucitati (Delphi)11.03.2005. u 17:06 - pre 232 meseci
Pokusavam da ucitam CD.dat file i da mi popuni listbox u aplikaciji.
[url]http://www.nldelphi.com/forum/attachment.php?attachmentid=2483&stc=1[/url]

unit mi izgleda ovako:
Code:
unit untFrmCDManager;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, untCdData, untFrmCDManagerAdd, untFrmCDManagerChange;

type
  TfrmCDMngr = class(TForm)
    lstbxCD: TListBox;
    scrollBarCD: TScrollBar;
    edtJaarOpgave: TEdit;
    lblJaarUitgave: TLabel;
    mmBeschrijving: TMemo;
    lblBeschrijving: TLabel;
    lblTitel: TLabel;
    btnAdd: TButton;
    btnChange: TButton;
    btnDelete: TButton;
    btnPrint: TButton;
    btnClose: TButton;
    lblArtistTitel: TLabel;
    procedure Start(Sender: TObject);
    procedure btnCloseClick(Sender: TObject);
    procedure btnAddClick(Sender: TObject);
    procedure btnChangeClick(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmCDMngr: TfrmCDMngr;
  frmCDMngrAdd: TfrmCDMngrAdd;
  frmCDMngrChange: TfrmCDMngrChange;


implementation

{$R *.dfm}

procedure TfrmCDMngr.Start(Sender: TObject);
var
  cdFile: file of TCdRecord;
  cdManager: TCdRecord;
  cdInfo: String;
begin
  lstbxCD.Clear;
  AssignFile (cdFile, 'CD.DAT');
  try
    Reset (cdFile);
    while not Eof (cdFile)
    do begin
      Read (cdFile, cdManager);
      cdInfo := cdManager.sArtistNamePart1 + ': '+ cdManager.sArtistNamePart2;
      lstbxCD.Items.Add (cdInfo);
   end;
   CloseFile (cdFile)
   except
     ShowMessage ('File CD.DAT niet gevonden')
   end
end;

procedure TfrmCDMngr.btnCloseClick(Sender: TObject);
begin
 Close
end;

procedure TfrmCDMngr.btnAddClick(Sender: TObject);
begin
  frmCDMngrAdd := TfrmCDMngrAdd.Create(Application);
  frmCDMngrAdd.ShowModal;
end;

procedure TfrmCDMngr.btnChangeClick(Sender: TObject);
begin
    frmCDMngrChange := TfrmCDMngrChange.Create(Application);
    frmCDMngrChange.ShowModal;
end;

end.


CD.DAT postoji, ali u ovdje vidim da ga ne ucita.
U ovaj dio nikako ne udje (provjerila sam sa porukama (ShowMessage)): while not Eof (cdFile) do begin

Kako da rijesim ovaj problem.

Unaprijed hvala.


 
Odgovor na temu

vlaiv
Vladimir Vlaisavljevic
Novi Sad

Član broj: 15993
Poruke: 352
*.neobee.net.



+1 Profil

icon Re: DAT File ucitati (Delphi)11.03.2005. u 17:50 - pre 232 meseci
Prvo sto mi pada na pamet jeste da li se cd.dat nalazi u istom direktorijumu odakle se pokrece program?

Mozda bi bilo najbolje zameniti 'cd.dat' sa 'c:\cd.dat' za pocetak i smestiti cd.dat fajl na datu lokaciju (sto ce reci c:) ....

Vidim tek sada kazes postoji fajl ...


Da li podigne exception?
 
Odgovor na temu

vlaiv
Vladimir Vlaisavljevic
Novi Sad

Član broj: 15993
Poruke: 352
*.neobee.net.



+1 Profil

icon Re: DAT File ucitati (Delphi)11.03.2005. u 17:52 - pre 232 meseci
Mozda treba pogledati i ovo:

Citat:
Warning: The default value of FileMode is 2 (Read/Write access). If this is not changed to a read-only file mode before calling Reset, attempts to open read-only files will fail.


Ukoliko je cd.dat readonly, promeni FileMode varijabilu pre poziva ...
 
Odgovor na temu

query
NL

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



Profil

icon Re: DAT File ucitati (Delphi)11.03.2005. u 18:20 - pre 232 meseci
Cak ne dodje ni u exception... :(
P.S. Ja sam totalni pocetnik sto se tice Delphi-a, pa ako postavim neka glupa pitanja nemoj zameriti. :)
 
Odgovor na temu

query
NL

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



Profil

icon Re: DAT File ucitati (Delphi)11.03.2005. u 18:24 - pre 232 meseci
Ovo je drugio dio, gdje mi je recordfile
Code:

interface

const
  MAXLEN_NAMEPART1 = 10;
  MAXLEN_NAMEPART2 = 25;
  MAXLEN_TITLE = 40;
  MAXLEN_DESCRIPTION = 255;
  CD_FILENAME = 'CD.DAT';
type
  TCdRecord =
    record
      sArtistNamePart1: String[MAXLEN_NAMEPART1];
      sArtistNamePart2: String[MAXLEN_NAMEPART2];
      sTitle: String[MAXLEN_TITLE];
      sDescription: String[MAXLEN_DESCRIPTION];
      iReleaseYear: Integer
    end;


implementation

end.


P.S. Ja sam kontala da mi je vec file sam read-only, pa mislim da bi mi odmah zavrsio u Reset (cdFile)...
 
Odgovor na temu

query
NL

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



Profil

icon Re: DAT File ucitati (Delphi)11.03.2005. u 19:21 - pre 232 meseci
Nesto nije u redu sa ovim Read...

Kad promjenim Read u ReadLn dobijem gresku:
[Error] untFrmCDManager.pas(73): Incompatible types
[Fatal Error] CDManager.dpr(6): Could not compile used unit 'untFrmCDManager.pas'

Kako da to promjenim taj FileMode u Read only?
 
Odgovor na temu

engineer

Član broj: 45205
Poruke: 113
*.metrohive.neobee.net.

Jabber: engineer


Profil

icon Re: DAT File ucitati (Delphi)12.03.2005. u 06:44 - pre 232 meseci
Citat:
query: Kako da to promjenim taj FileMode u Read only?
Code:
FileMode := fmOpenRead;
 
Odgovor na temu

query
NL

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



Profil

icon Re: DAT File ucitati (Delphi)12.03.2005. u 12:52 - pre 232 meseci
Opet se nista ne desava kad i kad stavim FileMode := fmOpenRead;
Stavila sam ShowMessage da vidim desava li se ista. Open ne udje u ovaj while, a niti u exception.
Samo mi dodje u ovaj dio message (1); a Message (2) ne.


Code:
    procedure TfrmCDMngr.Start(Sender: TObject);
var
  cdFile: file of TCdRecord;
  cdManager: TCdRecord;
  cdInfo: String;
begin
   ShowMessage('1');

  lstbxCD.Clear;
  AssignFile (cdFile, CD_FILENAME);
  FileMode := fmOpenRead;
  try
    Reset (cdFile);
    while not Eof (cdFile)
    do begin
    ShowMessage('2');
      Read (cdFile, cdManager);
      cdInfo := cdManager.sArtistNamePart1 + ': '+ cdManager.sArtistNamePart2;
      lstbxCD.Items.Add (cdInfo);
   end;
   CloseFile (cdFile)
   except
     ShowMessage ('File CD.DAT niet gevonden')
   end
end;


Stvarno ne znam sta je ovdje pogresno...
 
Odgovor na temu

bancika
Branislav Stojkovic

Član broj: 24844
Poruke: 631
213.244.208.*

Sajt: www.diy-fever.com


+1 Profil

icon Re: DAT File ucitati (Delphi)12.03.2005. u 22:15 - pre 232 meseci
a da citas kao TFileStream?
recimo ovako
Code:

  F := TFileStream.Create(FileName, fmOpenRead);
  try
     while F.Position < F.Size do
       begin
          F.Read(s1, 10);
          F.Read(s2, 25);
          ...bla bla, ili napravis slog, pa tako nesto
       end;
  finally
    F.Free;
  end;

nisam siguran da ovako moze, iz glave pisem, ali vredi pokusati kad vec nece onako :)
Ride the rainbow, crack the sky

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

vlaiv
Vladimir Vlaisavljevic
Novi Sad

Član broj: 15993
Poruke: 352
*.neobee.net.



+1 Profil

icon Re: DAT File ucitati (Delphi)13.03.2005. u 22:22 - pre 232 meseci
Pogledaj da li ti se u kodu igde nalazi sledece : {$I-}

ili tako nesto ... ako se nalazi pobrisi to ili promeni na {$I+} to ce naterati kompajler da dize exception na file rutinama ako ima razloga

Za svaki slucaj pogledaj i ovo

probaj posle reset procedure da proveris IOResult globalnu promenljivu:

if IOResult<>0 then
showmessage(IntToStr(IOResult));

Pa ako javi neki kod pogledaj u helpu sta znaci pod io errors ...
 
Odgovor na temu

Toyo

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



+1 Profil

icon Re: DAT File ucitati (Delphi)14.03.2005. u 01:50 - pre 232 meseci
Ajde da i ja odgovorim:

Prvo na vlaiv
IOResult bar je tako bilo u ranijim verzijama BPascala si mogao da citas samo jednom, a posle se sam resetovao. Znaci da na showmessage nece dobiti nista posto si IOResult vec jednom procitao u prethodnom if.

@devojku

Nisam hteo proslog dana ni da odgovaram posto jos ne znas (ili mozda znas) da koristis debager. Ne verujem da je neko mogao nesto tako da napise, ako ispravnost programa proverava sa showmessage.

Ukljuci debug u opcijama kompajlera, stavi break point na prvu naredbu u proceduri i onda lepo sa F8 liniju po liniju na dole pa ces videti dal ti program ulazi u while petlju ili problem kod reset.

Voljni smo da pomognemo, ali si dala 4 linije (izmedju show1 i show2) gde ti kod ne valja. Pomocu debagera mozes tacno naci liniju gde javlja gresku.

Zaboga pa debager je jedna od najlepsih opcija svih kompajlera. Bez njega (hvatanje gresaka na slepo) bi vise od pola programera diglo ruke od ovog zanata.

Znaci red po red, odmah iza begin stavi {$I+}, pa javi tacno koju gresku delphi javlja.

Verovatno sam smorio sve. :)

Pozdrav
 
Odgovor na temu

vlaiv
Vladimir Vlaisavljevic
Novi Sad

Član broj: 15993
Poruke: 352
*.neobee.net.



+1 Profil

icon Re: DAT File ucitati (Delphi)14.03.2005. u 20:52 - pre 232 meseci
@Toyo

U pravu si ... davno se radilo sa TP i BP i ostalim :)

No naravano moze se iscitati greska u varijablu pa dalje ....

Ali mi stvarno nije jasno o cemu se tu radi, nema exception-a, izgleda kad se odradi reset, onda je fajl odmah na kraju (eof=true) ...
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: DAT File ucitati (Delphi)

[ Pregleda: 3100 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

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