Avatar billede aasuper Nybegynder
19. januar 2001 - 22:39 Der er 32 kommentarer og
1 løsning

Fejl under afvikling på PC u. Delphi

Hej

Jeg har lavet et program i Delphi 5. Det fungerer fint på min computer.
Så vil jeg så teste det på en anden. Her kan det slet ikke køre, da Windows 2000 blot siger, at programmet har genereret fejl.

Hvad kan årsagen være?


>>AASuper
Avatar billede eagleeye Praktikant
19. januar 2001 - 22:41 #1
Er din computer med windows 2000?

Benytter du nogle API kald?

Benytter du nogle Delphi DLL\'er?
Avatar billede aasuper Nybegynder
19. januar 2001 - 22:43 #2
Begge computere er med Windows 2000.
Nej, ingen API-kald.
Ja, en DLL.

>>AASuper
Avatar billede pstric Nybegynder
19. januar 2001 - 22:43 #3
Det er lidt svært at sige, når du ikke oplyser særlig meget om programmet.

Har du brugt nogle shareware komponenter? Kalder du nogle COM- eller ActiveX-ting?

Må vi se lidt af koden?
Avatar billede microtec Nybegynder
19. januar 2001 - 22:47 #4
aasuper >> Du skal kopiere den DLL du benytter med over på den PC uden Delphi. Du kan evt. bare placere den i samme folder som din EXE-fil.
Jeg tror det er dit problem.
Avatar billede eagleeye Praktikant
19. januar 2001 - 22:47 #5
Ja som pstric siger, vi skal nok havde lidt mere info.

Hvilken DLL?
Avatar billede pstric Nybegynder
19. januar 2001 - 22:49 #6
Hvad er det for en fejl, du får. Windows plejer ikke at nøjes med at sige at programmet har genereret en fejl.
Avatar billede eagleeye Praktikant
19. januar 2001 - 22:49 #7
Ja hvis det er en delphi DLL så skal den over på den anden maskine.
Avatar billede aasuper Nybegynder
19. januar 2001 - 22:49 #8
Jeg kan fortælle lidt:
(jeg kun delvis øvet)


Jeg startede med at have et program, som ved hjælp af en almindelig knap åbnede en form vha.

formX:=TformX.Create(application);
formX:=ShowModal;
formX.Free;
(selvfølgelig oprettes denne form ikke ved start)


Når denne kode så blev afviklet, altså når formen skulle oprettes vha. knappen, sagde den, at den ikke kunne finde \"den angivne fil\".

Derefter forsøgte jeg mig så med en dirkete tFormX.ShowModal;
og en form, som blev oprettet ved start. Og så kom så mit problem.

I begge forme, som skal oprettes, bruger jeg en hjemmelavet DLL, men det burde vel ikke have noget at sige, når fejlen kun opstår på den ene?


>>AASuper

Avatar billede eagleeye Praktikant
19. januar 2001 - 22:53 #9
Hvilke type parameter har du funktionerne i din DLL. Er der nogle som er af typen string ?

function (var1: string);
Avatar billede pstric Nybegynder
19. januar 2001 - 22:53 #10
\"den angivne fil\", er det dll-en?
Avatar billede aasuper Nybegynder
19. januar 2001 - 22:55 #11
Den siger ikke, om det er DLL\'en. Og det kan jeg ikke forstå.

Min DLL indeholder kun ShortString og integer i funktionsparametrene.

Men det virker jo godt nok på den første form?

Desuden kommer Windows ikke med anden fejlmeddelelse.


>>AASuper
Avatar billede microtec Nybegynder
19. januar 2001 - 22:59 #12
Har du husket at kopiere DLL-en med over på den anden PC?
Avatar billede eagleeye Praktikant
19. januar 2001 - 22:59 #13
Jow men som du sikkert har bemærket så skal man huske DLL\'en BORLNDMM.DLL hvis man benytter strings som parameter i DLL\'er. Den er installeret med Delphi og ligger derfor kun på den maskine med Delphi. Men du skriver du benytter shortstring som parameter, så du behøver ikke den omtalte DLL.
Avatar billede aasuper Nybegynder
19. januar 2001 - 22:59 #14
Ja, ja!

>>AASuper
Avatar billede microtec Nybegynder
19. januar 2001 - 23:01 #15
eagleeye >> Uanset hvilken DLL der er tale om, skal den med over på den anden PC (hvis den da ikke allerede er der).
Avatar billede eagleeye Praktikant
19. januar 2001 - 23:03 #16
microtec>> Den DLL som aasuper har laver skal naturligvis med over. Hvis man benytter String som parameter i funktioner i ens egne DLL skal man også havde BORLNDMM.DLL med. Hvis man ikke benytter Strings er BORLNDMM.DLL ikke nødvendig.
Avatar billede hatecaps Nybegynder
19. januar 2001 - 23:05 #17
formX:=TformX.Create(application);
formX:=ShowModal;
formX.Free;
vil aldrig virke hvis du har skrevet det precist sådan,


formX:=TformX.Create(application);
formX.ShowModal;
formX.Free;

burde virke uanset hvad du ellers bruger af DLL\'er og andet godt
Avatar billede aasuper Nybegynder
19. januar 2001 - 23:08 #18
HateCaps>> Ja, det er rigtigt. Jeg har har selvfølgelig punktum mellem fomrX og ShowModal i den rigtigt kode - det var blot en tastefejl her på siden!

Eagleeye>> Jeg har for alle tilfældes skyld lagt BORLNDMM.DLL over i programbiblioteket - det skete der ikke noget ved.


>>AASuper
Avatar billede microtec Nybegynder
19. januar 2001 - 23:11 #19
Mon det med en DLL ikke er lidt et vildspor.
Windows plejer at være flink til at fortælle hvilken DLL der mangler eller er fejl I.
Avatar billede eagleeye Praktikant
19. januar 2001 - 23:13 #20
Benytter du nogle ActiveX kumpunenter?

Benytter du OLE?

Benytter du Package?
Avatar billede aasuper Nybegynder
19. januar 2001 - 23:14 #21
Den siger kun: \"Den angivne fil kan ikke findes. Kontroller at sti og filnavn er korrekt\"

Den omtaler ikke hvilken fil, det er.

>>AASuper
Avatar billede eagleeye Praktikant
19. januar 2001 - 23:15 #22
Hvordan laver du referencen til DLL filen i dit program ?
Avatar billede aasuper Nybegynder
19. januar 2001 - 23:16 #23
Jeg har ikke benyttet ActiveX.

Hvad mener du med Package?


Kan I bruge Uses-sætningen i kodefilen?

>>AASuper
Avatar billede pstric Nybegynder
19. januar 2001 - 23:18 #24
Har du valgt \'Build with runtime packages\' i Project Options|Packages
Avatar billede aasuper Nybegynder
19. januar 2001 - 23:22 #25
EagleEye>> Function Navn(param: ShortString): Shortstring; stdcall; external \'minfil.dll\';

pstric>>Når jeg gør dette og kører programmet brokker det sig over, at der mangler en fil, der hedder noget omkring vcl50.dpl.


>>AASuper
Avatar billede microtec Nybegynder
19. januar 2001 - 23:25 #26
Så har du dit problem der.
Hvis du ikke benytter \'Build with runtime packages\' kan du ikke bare flytte programmet til en anden PC, som ikke har Delphis Runtime biblioteker installeret.
Avatar billede aasuper Nybegynder
19. januar 2001 - 23:26 #27
Hvad skal jeg gøre, så den ikke brokker sig, når jeg kører programmet på en anden computer?


>>AASuper
Avatar billede microtec Nybegynder
19. januar 2001 - 23:29 #28
Du skal i hvert fald have Delphi til at kunne compilere med \'Build with runtime packages\'.
Det er muligt at du skulle prøve at geninstallere Delphi.
Avatar billede microtec Nybegynder
19. januar 2001 - 23:32 #29
Prøve evt. også at søge efter vcl50.dpl på din PC med Delphi. De bør være der et sted, med mindre den er blevet slettet ved et uheld.
Avatar billede eagleeye Praktikant
19. januar 2001 - 23:35 #30
Hvis vcl50.dpl er slettet kan Delphi vis ikke vise kompunterne og vil komme med nogle fejl.
Avatar billede eagleeye Praktikant
20. januar 2001 - 01:25 #31
Jeg kan ikke helt forstå i siger det er problemet. Man benytter da kun package hvis man bevist laver en package og så linker den med exe filen.
Avatar billede aasuper Nybegynder
20. januar 2001 - 12:00 #32
\'Build with runtime packages\' skal man ikke bruge normalt, da de oversatte biblioteksfiler ikke vil blive medtaget. Hvis der er hak i denne, kan man altså slet ikke køre programmet på en pc uden Delphi.

Jeg tror ikke, at problemet ligger her.


>>AASuper
Avatar billede aasuper Nybegynder
20. januar 2001 - 18:14 #33
Jeg har selv fundet løsningen efter lang tids baksen.

Der var et problem med en MediaPlayer, som stod på AutoOpen, når programmet startedes. Så kunne den selvfølgelig ikke åbne filen, da den ikke var angivet.

Undskyld ulejligheden!


>>AASuper
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester