Avatar billede hrc Mester
01. marts 2007 - 10:42 Der er 13 kommentarer og
1 løsning

DataSource-link forsvinder umotiveret

I det program jeg arbejder med - og det har en historie tilbage til D1. Delphi 7 er platformen. Komponentpakken InfoPower (egentlig noget skrammelsoftware) er et centralt element.

Mainformen, en tung grim sag på 17000 linjer, indeholder et væld af TwwTable-, TwwQuery- og TwwDataSource-komponenter som de omkringliggende forme refererer til.
Det er grimt, dumt og noget der hører fortiden til - men lad det ligge.

Problemet er at jeg flere gange har oplevet at disse referencer umotiveret forsvinder:

- Går ind i en subform, retter nogle ting i koden, gemmer og oversætter. Trykker <F9> og kører programmet. Pludselig fejler formen da datasourcen i TwwDBGrid m.fl. er blevet nulstillet.

- Stopper programmet, sætter datasource'rne op igen, gemmer, kører og alt er fint.

- Stopper programmet, arbejder videre, oversætter, kører programmet og pludselig er den gal med formen igen.

Er det Delphi, mig eller InfoPower der driller?

Jeg har oplevet det 2-3 gange i den sidste måneds tid. Er der nogen der har lignende oplevelser - og eventuelt en forklaring på hvad der sker?
Avatar billede martinlind Nybegynder
01. marts 2007 - 11:46 #1
Jeg har oplevet det engang, jeg lavede noget kode i create proceduren der satte dem rigtigt, så jeg ikke skulle cheke det hver gang.

Du kan prøve at checke din dfm fil og se om ref. stadig står i den, det kan jo ligge mange stedder men mon ikke det er et resource problem, når du har alle de comp.
Avatar billede hrc Mester
01. marts 2007 - 12:11 #2
Hej Martin. Jeg kan desværre ikke bruge rådet da der er en halv zillion (400+) forme der gør kan finde på at gøre det sådan. Da jeg ikke ved hvad udløser handlingen er det nærmest umuligt at teste.

Fik lige en idé. Nu jeg har taget arbejdet med at konvertere alle DFM-filerne til tekstfiler, lave et program der høvler gennem dem og tjekker de komponenter der ikke kan virke uden en DataSource. Kan vel bruge Delphi's egne klasser til at læse komponenternes attributter.
Måske skal jeg prøve det i aften - mellem bleskift, vasketure, indkøb, reparation af cykler/legetøj, madlavning, oprydning, opvask og historielæsning... Med børn forsvinder der altså et stort element i en nørds liv: Det at kunne nørde og derved slippe lidt væk fra kæresten :-) Håber børnene vil passe mig når jeg bliver gammel!!
Avatar billede martinlind Nybegynder
01. marts 2007 - 12:51 #3
Der findes så vit jeg husker en delphi util til at convertere dine dfm filer, convert mener jeg den hedder.
Avatar billede martinlind Nybegynder
01. marts 2007 - 12:53 #4
Det kan jo godt ligge i dine InfoPower comp. hvis de i nogle situationer fuker delphi component load op, så for de ikke loadet form/component props rigtigt ind. Derfor kunne det være meget interessant at vide om der rent faktisk står det der skal i dfm filen.
Avatar billede hrc Mester
01. marts 2007 - 14:41 #5
Den brugte jeg skam også. Noget med "for %%v in (*.dfm) do convert %%v %%v -o" i en bat-fil - men der var alligevel en del arbejde bagefter for programmet kunne ikke oversættes bagefter (og hvor var backuppen?).

Kiggede i DFM-filen og datasource'ne står fint. De forsvandt igen for en time side, så nu har jeg faktisk proppet en OutputDebugString, samt manuel indsættelse af datasource'ne ind i min OnCreate.

Spekulerer på om det har noget at gøre med, at førnævnte mange tabeller på mainformen også findes med identiske navne på et TDataModule der også er synlig fra formen.
Avatar billede hrc Mester
01. marts 2007 - 14:44 #6
Dette er den korrekte syntaks: for %%v in (*.dfm) do convert -i -t %%v.

Man bør i øvrigt kopiere convert.exe til kataloget da den elles snupper MS' FAT32->NTFS convert.exe.
Avatar billede hrc Mester
21. marts 2007 - 09:53 #7
Martin. Jeg lukker spørgsmålet nu, smider du et svar?
Avatar billede hrc Mester
13. april 2007 - 11:14 #8
Hej Martin. Vil du ikke have points?
Avatar billede martinlind Nybegynder
13. april 2007 - 15:16 #9
Jow tak :)
Avatar billede martinlind Nybegynder
13. april 2007 - 15:23 #10
Så er det weekend tid :)
Avatar billede hrc Mester
13. april 2007 - 16:43 #11
Jeg endte med at gøre som du anbefalede: At hårdkode det i OnCreate - men pønser på at lave et program der kigger efter manglende DataSource properties ved udvalgte klasser. Et "Check før jeg frigiver"-program.
Har lige måtte gøre det ved en dialog i dag; mistænker WPTools komponenterne for at være dårligt kodede.
Avatar billede martinlind Nybegynder
14. april 2007 - 12:25 #12
Hvis jeg ikke husker helt forkert er det noget jeg har oplevet "med dårlige componenter" installeret :), så det kunne godt være du skulle bore lidt i den mistanke...
Avatar billede hrc Mester
19. september 2008 - 09:45 #13
En opfølgning: Har nu gjort det til praksis at åbne main-formen som det første. Hvis den er der (det er der tabellerne er anbragt (af en programmør, der burde sættes på hjul og stejle (http://da.wikipedia.org/wiki/Hjul_og_stejle)), bliver linksene ikke revet over - ellers gør de det ganske konsekvent.
Avatar billede hrc Mester
19. september 2008 - 09:46 #14
Indrømmet. Hjul og stejle er måske lige rabiat nok, men mainformen fylder næsten en halv Mb og er ret svær at finde rundt i.
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