/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
OpenDialog Try,Execpt og Finally?
Fra : Monie Jacobsen


Dato : 24-12-03 08:01

Hej

Jeg har prøvet meget, at ville lærer Try,Execpt og Finally.
Vil du hjælpe mig med, at rette kodeeksempel så den funger?

procedure TfmValg.btnHentNavnDatabaseClick(Sender: TObject);
begin
fmIndskrivPers.dbEngelihBabybog.Close;
try
//Finde NavnDataBase

if OpenDialog1.Execute then
begin
fmIndskrivPers.dbEngelihBabybog.FileName := OpenDialog1.FileName;
Label1.Caption:=FileName;
end;
except
//Hvis ikke, så meddelsen

on e:EConvertError do
begin
ShowMessage('Ingen NavnDatabase fundetl - DefaultNavnDatabas
indsættes! : ' + e.Message);
end;
Finally
// indsæt DefaultNavnDatabase


fmIndskrivPers.dbEngelihBabybog.LoadFromFile('C:\BookMap\DefaultNavnDatabase
..txt');
Label1.Caption:='DefaultNavnDatabase';

end; // try..except.

fmIndskrivPers.dbEngelihBabybog.Open;
fmIndskrivPers.mnuNavnDatabase.Click;
end;

På forhånden mange tak!
Med venlig hilsen og en god jul
Monie Jacobsen

E-mail:energy@sunwind.dk.




 
 
Kurt Bilde (24-12-2003)
Kommentar
Fra : Kurt Bilde


Dato : 24-12-03 09:48

Hej Monie !

Monie Jacobsen wrote:

> procedure TfmValg.btnHentNavnDatabaseClick(Sender: TObject);
> begin
> fmIndskrivPers.dbEngelihBabybog.Close;
> try
> //Finde NavnDataBase
>
Jeg forstår ikke helt hvorfor du vil bruge try her.....
I OpenDialog1 kan man trykke annuler, hvilket jo betyder at man ikke
ønsker at åbne en ny database - det handler du ikke. Og ja endelig kan
man vælge en fil som man sletter i den lange tænkepause, men det er der
taget højde for nu med FileExists, som ligger i SysUtils.

God jul!!!

procedure TfmValg.btnHentNavnDatabaseClick(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
fmIndskrivPers.dbEngelihBabybog.Close;
fmIndskrivPers.dbEngelihBabybog.FileName := OpenDialog1.FileName;
if not FileExists(fmIndskrivPers.dbEngelihBabybog.FileName) then
begin
ShowMessage('Ingen NavnDatabase fundetl - DefaultNavnDatabase
indsættes!');

fmIndskrivPers.dbEngelihBabybog.LoadFromFile('C:\BookMap\DefaultNavnDatabase.txt');
Label1.Caption:='DefaultNavnDatabase';
end else Label1.Caption:=FileName;
fmIndskrivPers.dbEngelihBabybog.Open;
fmIndskrivPers.mnuNavnDatabase.Click;
end;
end;

-Kurt


Monie Jacobsen (24-12-2003)
Kommentar
Fra : Monie Jacobsen


Dato : 24-12-03 12:35

Hej Kurt

Tak for dit fin svar og eksempel.
Jeg vil afprøve dette og arbejde med det. Mange tak Kurt!

Med venlig hilsen og en god jul aften for dig og din famile.

Monie Jacobsen


"Kurt Bilde" <kub@sam.sdu.dk> skrev i en meddelelse
news:bsbjcg$vb5$1@news.net.uni-c.dk...
> Hej Monie !
>
> Monie Jacobsen wrote:
>
> > procedure TfmValg.btnHentNavnDatabaseClick(Sender: TObject);
> > begin
> > fmIndskrivPers.dbEngelihBabybog.Close;
> > try
> > //Finde NavnDataBase
> >
> Jeg forstår ikke helt hvorfor du vil bruge try her.....
> I OpenDialog1 kan man trykke annuler, hvilket jo betyder at man ikke
> ønsker at åbne en ny database - det handler du ikke. Og ja endelig kan
> man vælge en fil som man sletter i den lange tænkepause, men det er der
> taget højde for nu med FileExists, som ligger i SysUtils.
>
> God jul!!!
>
> procedure TfmValg.btnHentNavnDatabaseClick(Sender: TObject);
> begin
> if OpenDialog1.Execute then
> begin
> fmIndskrivPers.dbEngelihBabybog.Close;
> fmIndskrivPers.dbEngelihBabybog.FileName := OpenDialog1.FileName;
> if not FileExists(fmIndskrivPers.dbEngelihBabybog.FileName) then
> begin
> ShowMessage('Ingen NavnDatabase fundetl - DefaultNavnDatabase
> indsættes!');
>
>
fmIndskrivPers.dbEngelihBabybog.LoadFromFile('C:\BookMap\DefaultNavnDatabase
..txt');
> Label1.Caption:='DefaultNavnDatabase';
> end else Label1.Caption:=FileName;
> fmIndskrivPers.dbEngelihBabybog.Open;
> fmIndskrivPers.mnuNavnDatabase.Click;
> end;
> end;
>
> -Kurt
>



Monie Jacobsen (24-12-2003)
Kommentar
Fra : Monie Jacobsen


Dato : 24-12-03 16:21

Hej Kurt Bilde

Jeg har prøve forskellige måder, at indsætte nedstående coder med dem du
forslår!
Vil du være behjælpelig med et eksempel?

procedure TfmValg.btnHentNavnDatabaseClick(Sender: TObject);
begin
fmIndskrivPers.dbEngelihBabybog.Close;

//Der skal først findes en fil, udvælges blandt de forskellige
EngelishNavnDatabase.txt , DanishNavnDatabase.txt o.s.v.

fmIndskrivPers.dbEngelishBabybog.LoadFromFile('C:\BookMap\EngelishNavnDataba
se.txt);

// Og hvis ikke så skal den DefaultNavnDatabase.txt hentes ind.

fmIndskrivPers.dbEngelihBabybog.Open;

end;
end.

Med venlig hilsen og en god julaften!
Monie Jacobsen
E-mail: energy@sunwind.dk


"Kurt Bilde" <kub@sam.sdu.dk> skrev i en meddelelse
news:bsbjcg$vb5$1@news.net.uni-c.dk...
> Hej Monie !
>
> Monie Jacobsen wrote:
>
> > procedure TfmValg.btnHentNavnDatabaseClick(Sender: TObject);
> > begin
> > fmIndskrivPers.dbEngelihBabybog.Close;
> > try
> > //Finde NavnDataBase
> >
> Jeg forstår ikke helt hvorfor du vil bruge try her.....
> I OpenDialog1 kan man trykke annuler, hvilket jo betyder at man ikke
> ønsker at åbne en ny database - det handler du ikke. Og ja endelig kan
> man vælge en fil som man sletter i den lange tænkepause, men det er der
> taget højde for nu med FileExists, som ligger i SysUtils.
>
> God jul!!!
>
> procedure TfmValg.btnHentNavnDatabaseClick(Sender: TObject);
> begin
> if OpenDialog1.Execute then
> begin
> fmIndskrivPers.dbEngelihBabybog.Close;
> fmIndskrivPers.dbEngelihBabybog.FileName := OpenDialog1.FileName;
> if not FileExists(fmIndskrivPers.dbEngelihBabybog.FileName) then
> begin
> ShowMessage('Ingen NavnDatabase fundetl - DefaultNavnDatabase
> indsættes!');
>
>
fmIndskrivPers.dbEngelihBabybog.LoadFromFile('C:\BookMap\DefaultNavnDatabase
..txt');
> Label1.Caption:='DefaultNavnDatabase';
> end else Label1.Caption:=FileName;
> fmIndskrivPers.dbEngelihBabybog.Open;
> fmIndskrivPers.mnuNavnDatabase.Click;
> end;
> end;
>
> -Kurt
>



Kurt Bilde (26-12-2003)
Kommentar
Fra : Kurt Bilde


Dato : 26-12-03 10:59

Hej Monie !

Monie Jacobsen wrote:

> Hej Kurt Bilde
>
> Jeg har prøve forskellige måder, at indsætte nedstående coder med dem du
> forslår!
Jeg byggede blot vidre på det du selv havde lavet....

> Vil du være behjælpelig med et eksempel?
Du kan checke både det Lars har posted og det jeg har. Alt efter hvor
det går galt
og i hvilken linie kode, kan du jo poste det under den rette tråd.

-Kurt


Monie Jacobsen (26-12-2003)
Kommentar
Fra : Monie Jacobsen


Dato : 26-12-03 13:39

Hej Kurt Bilde
Har forsøgt med følgende code!
Med den virker ikke, ved ikke noget valgt fil ,går den ikke til if not
FileExists!
Og Label1.Caption:=FileName; //Virker ikke!

Er der noget jeg overser?

begin
OpenDialog1.DefaultExt := '*.cds';
if OpenDialog1.Execute then
begin
fmIndskrivPers.dbEngelihBabybog.Close;
fmIndskrivPers.dbEngelihBabybog.FileName := OpenDialog1.FileName;
fmValg.Label1.Caption:=FileName; //Virker ikke!
if not FileExists(fmIndskrivPers.dbEngelihBabybog.FileName) then
//Virker ikke!
begin
ShowMessage('Ingen NavnDatabase fundetl - DefaultNavnDatabase
indsættes!');

fmIndskrivPers.dbEngelihBabybog.LoadFromFile('C:\BookMap\DefaultNavnDatabase
..txt');
Label1.Caption:='DefaultNavnDatabase';
end;
fmIndskrivPers.dbEngelihBabybog.Open;
end;
end;

Med venlig hilsen
Monie Jacobsen


"Kurt Bilde" <kub@sam.sdu.dk> skrev i en meddelelse
news:bsbjcg$vb5$1@news.net.uni-c.dk...
> Hej Monie !
>
> Monie Jacobsen wrote:
>
> > procedure TfmValg.btnHentNavnDatabaseClick(Sender: TObject);
> > begin
> > fmIndskrivPers.dbEngelihBabybog.Close;
> > try
> > //Finde NavnDataBase
> >
> Jeg forstår ikke helt hvorfor du vil bruge try her.....
> I OpenDialog1 kan man trykke annuler, hvilket jo betyder at man ikke
> ønsker at åbne en ny database - det handler du ikke. Og ja endelig kan
> man vælge en fil som man sletter i den lange tænkepause, men det er der
> taget højde for nu med FileExists, som ligger i SysUtils.
>
> God jul!!!
>
> procedure TfmValg.btnHentNavnDatabaseClick(Sender: TObject);
> begin
> if OpenDialog1.Execute then
> begin
> fmIndskrivPers.dbEngelihBabybog.Close;
> fmIndskrivPers.dbEngelihBabybog.FileName := OpenDialog1.FileName;
> if not FileExists(fmIndskrivPers.dbEngelihBabybog.FileName) then
> begin
> ShowMessage('Ingen NavnDatabase fundetl - DefaultNavnDatabase
> indsættes!');
>
>
fmIndskrivPers.dbEngelihBabybog.LoadFromFile('C:\BookMap\DefaultNavnDatabase
..txt');
> Label1.Caption:='DefaultNavnDatabase';
> end else Label1.Caption:=FileName;
> fmIndskrivPers.dbEngelihBabybog.Open;
> fmIndskrivPers.mnuNavnDatabase.Click;
> end;
> end;
>
> -Kurt
>



Kurt Bilde (28-12-2003)
Kommentar
Fra : Kurt Bilde


Dato : 28-12-03 17:43

Hej Monie !

Monie Jacobsen wrote:
> Med den virker ikke, ved ikke noget valgt fil ,går den ikke til if not
> FileExists!

"if OpenDialog1.Execute then"-konstruktionen sikre at du kan validere om
en bruger har valgt en fil eller trykket på "Luk"-knappen - ikke andet!
If FileExists er kun for at sikre at filen rent faktisk findes... Du kan
evt. via properties for din OpenDialog1-komponent sætte options for
ofFileMustExist, ofNoLongNames osv.

> Og Label1.Caption:=FileName; //Virker ikke!
fmValg.Label1.Caption:= OpenDialog1.FileName;

>
> Er der noget jeg overser?

Så må du skrive igen

-Kurt


Lars B. Dybdahl (24-12-2003)
Kommentar
Fra : Lars B. Dybdahl


Dato : 24-12-03 11:49

Monie Jacobsen wrote:
> Jeg har prøvet meget, at ville lærer Try,Execpt og Finally.

Det hele drejer sig om tilstande. Når man skifter tilstand, og man senere
skal skifte tilbage igen, så skal man bruge try. Eksempler:

- Hukommelse allokering. Med finally frigives denne igen. Herunder hører
objektoprettelse og nedlæggelse.
- Visning af GUI komponent, f.eks. progress bar. Med finally kan man sikre
at denne fjernes igen fra skærmen.
- Skift af TDataset tilstand. F.eks. skifter man med TDataset.Edit til edit
mode, og her skal man tilbage igen. Da ".post" ikke altid kan lykkedes,
skal ens kode hedder "dataset.append; try ...; ...; dataset.post; except
dataset.cancel; raise; end;"

> Vil du hjælpe mig med, at rette kodeeksempel så den funger?

Umiddelbart ser jeg kun problemer i ".LoadFromFile" og ".Open", og det er de
eneste, der derfor evt. kunne omsluttes af try...noget. I dette tilfælde
vil det muligvis give mest mening, hvis disse exceptions bare bliver vist
til brugeren - i så fald har du ikke brug for try...finally/except.

procedure TfmValg.btnHentNavnDatabaseClick(Sender: TObject);
begin
// Luk en tabel (går jeg ud fra)
fmIndskrivPers.dbEngelihBabybog.Close;
// Finde NavnDataBase. OpenDialog1 skal være sat til kun at returnere
eksisterende filnavne
if OpenDialog1.Execute then begin
fmIndskrivPers.dbEngelihBabybog.FileName := OpenDialog1.FileName;
Label1.Caption:=FileName;
end else begin
//Hvis ikke, så meddelsen
ShowMessage('Ingen NavnDatabase fundetl - DefaultNavnDatabase indsættes!
: ' + e.Message);
// indsæt DefaultNavnDatabase
Label1.Caption:='DefaultNavnDatabase';
fmIndskrivPers.dbEngelihBabybog.LoadFromFile
('C:\BookMap\DefaultNavnDatabase.txt');
end;
fmIndskrivPers.dbEngelihBabybog.Open;

// Aktiver et eller andet
fmIndskrivPers.mnuNavnDatabase.Click;
end;

Lars.

--
Freelance programmør
Delphi brugergruppen DAPUG: http://dapug.dk/
Delphi oversættelsesværktøjer: http://dxgettext.sf.net/

Monie Jacobsen (24-12-2003)
Kommentar
Fra : Monie Jacobsen


Dato : 24-12-03 12:38

Hej Lars B. Dybdahl
Tak fordi du svarede!

Med venlig hilsen og en rigtigt god julaften, for dig og din familie.
Monie Jacobsen

"Lars B. Dybdahl" <Lars@dybdahl.dk> skrev i en meddelelse
news:3fe96f30$0$159$edfadb0f@dread11.news.tele.dk...
> Monie Jacobsen wrote:
> > Jeg har prøvet meget, at ville lærer Try,Execpt og Finally.
>
> Det hele drejer sig om tilstande. Når man skifter tilstand, og man senere
> skal skifte tilbage igen, så skal man bruge try. Eksempler:
>
> - Hukommelse allokering. Med finally frigives denne igen. Herunder hører
> objektoprettelse og nedlæggelse.
> - Visning af GUI komponent, f.eks. progress bar. Med finally kan man sikre
> at denne fjernes igen fra skærmen.
> - Skift af TDataset tilstand. F.eks. skifter man med TDataset.Edit til
edit
> mode, og her skal man tilbage igen. Da ".post" ikke altid kan lykkedes,
> skal ens kode hedder "dataset.append; try ...; ...; dataset.post; except
> dataset.cancel; raise; end;"
>
> > Vil du hjælpe mig med, at rette kodeeksempel så den funger?
>
> Umiddelbart ser jeg kun problemer i ".LoadFromFile" og ".Open", og det er
de
> eneste, der derfor evt. kunne omsluttes af try...noget. I dette tilfælde
> vil det muligvis give mest mening, hvis disse exceptions bare bliver vist
> til brugeren - i så fald har du ikke brug for try...finally/except.
>
> procedure TfmValg.btnHentNavnDatabaseClick(Sender: TObject);
> begin
> // Luk en tabel (går jeg ud fra)
> fmIndskrivPers.dbEngelihBabybog.Close;
> // Finde NavnDataBase. OpenDialog1 skal være sat til kun at returnere
> eksisterende filnavne
> if OpenDialog1.Execute then begin
> fmIndskrivPers.dbEngelihBabybog.FileName := OpenDialog1.FileName;
> Label1.Caption:=FileName;
> end else begin
> //Hvis ikke, så meddelsen
> ShowMessage('Ingen NavnDatabase fundetl - DefaultNavnDatabase
indsættes!
> : ' + e.Message);
> // indsæt DefaultNavnDatabase
> Label1.Caption:='DefaultNavnDatabase';
> fmIndskrivPers.dbEngelihBabybog.LoadFromFile
> ('C:\BookMap\DefaultNavnDatabase.txt');
> end;
> fmIndskrivPers.dbEngelihBabybog.Open;
>
> // Aktiver et eller andet
> fmIndskrivPers.mnuNavnDatabase.Click;
> end;
>
> Lars.
>
> --
> Freelance programmør
> Delphi brugergruppen DAPUG: http://dapug.dk/
> Delphi oversættelsesværktøjer: http://dxgettext.sf.net/



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste