Avatar billede whynot Nybegynder
23. juli 2004 - 18:24 Der er 31 kommentarer og
1 løsning

"modul opdeling af program"

Hejsa allesammen

jeg er ved at lave et lille program for sjov hvor jeg gerne vil gøre sådan at mine kammerater kan printe statistik ud fra en server. Men de ønsker alle forskellige udprints.

Problemet er at de ikke alle skal have de samme udprintsmuligheder.. kan man lave det sådanne at man har et "grundprogram" som tilgår noget andet som indholder printmuligheder.. man kunne måske gøre sådan, at de enkelte brugere kunne hente en "patch" ned fra min hjemmeside indeholdende den printmulighed som de ønsker. Denne skulle så dukke op i en menu i "grundprogrammet" når de havde installeret den..

Kan det lade sig gøre og hvordan gør man det?
Avatar billede stone Forsker
23. juli 2004 - 18:31 #1
bruger dit program database?
Avatar billede whynot Nybegynder
23. juli 2004 - 18:36 #2
jep det bruger en mysql.. og jeg anvender MyDac
Avatar billede stone Forsker
23. juli 2004 - 18:39 #3
så kan du bruge quicreport, f.eks hvis der skal være 4 udprint muligheder
gemmes de 4 sider som *.qrp og lade dit program indlæse filen.
Avatar billede whynot Nybegynder
23. juli 2004 - 18:46 #4
og dvs. at når torben gerne vil udskrive bla bla og kurt vil udskrive noget helt andet så kan det lade sig gøre fordi de blot henter hver sine qrp fil ned.

Når denne fil bliver lagt ind i program dir - så har grundprogrammet en procedure der finder alle qrp filer og ligger dem ind i en menu med item.add - eller?
Avatar billede stone Forsker
23. juli 2004 - 19:21 #5
den patch kunne være en *.qrp, som brugeren vælger at bruge, dit program finder *.qrp
i mappen hvor dit program er og indlæser det. Grundprogrammet skal så kun indlæse den
aktuelle *.qrp. proceduren laver så som du selv er inde på en item i din hovedmenu eller popupmenu. Så længe det ikke er brugeren som selv kan configurere sin udprintning. Du kunne navngive alle *.qrp med samme navn og ligge dem på serveren
i forskellige biblioteker, så kan du fastlægge din procedure i dit grundprogram.
Avatar billede whynot Nybegynder
23. juli 2004 - 19:22 #6
okey.. det lyder smart.!... quick report er det en komponent på delphi skiven - fordi jeg kan ikke umiddelbart finde den.
Avatar billede stone Forsker
23. juli 2004 - 19:30 #7
hvilken version bruger du..

prøv at kigge i /bin biblioteket efter qrtdcl50.bpl - hvis det er d6 er det qrtdcl60.bpl.
Avatar billede whynot Nybegynder
23. juli 2004 - 19:35 #8
hmm du skriver i spm. http://www.eksperten.dk/spm/505055 at quick report ikke er det bedste.. øhm er report builder bedre og kan det også løse mit problem med nogle filer som brugerne downloader.. iøvrigt kan brugerne med en quick report og delphi selv åbne filerne og rette i dem?.. det er nemlig ikke så godt.. jeg vil gerne holde lidt tæt med hvordan databasen er opbygget.
Avatar billede stone Forsker
23. juli 2004 - 19:41 #9
jeg bruger selv quickreport til alle mine database programmer, og er kun stødt på et problem at der kan ikke eksistere 2 ekstanser af quickrapport på samme tid. Der er nogen der sværger til report builder, men jeg kender det ikke så godt så jeg kan ikke udtale mig om at det er bedre en quickrapport. Man kan ikke rette i en *.qrp fil da den henter data i den database som du har defineret.
Avatar billede whynot Nybegynder
23. juli 2004 - 21:26 #10
okey.. jeg bruger delphi 7 og jeg har fundet qrpt70.bpl og det ser ud til at det er den korrekte fil - men hvordan pokker installerer jeg den.!?!? jeg går op under "component" / "install packages" finder filen .. men får en fejl omkring at den ikke er en runtime pakke... !??!

hvad gør jeg forkert?
Avatar billede whynot Nybegynder
23. juli 2004 - 22:25 #11
ja .. problemet var at det var den forkerte fil alligevel.!!!

den hed: dclqrt70.bpl - hvilket du iøvrigt har beskrevet for mig i et tidligere spørgsmål (hvilket jeg lige har fundet ud af - sorry.. lidt pinligt).

Men okey.. nu er jeg klar til at afprøve din teori.. men nu støder jeg på første problem.. det eneste sted jeg umiddelbart kan se man kan gemme qrt filer er under preview - er det rigtigt?.. og hvis ja - er det så også under preview jeg skal hente dem ind igen.? og hvis det er rigtigt hvordan gør jeg det som en procedure?
Avatar billede stone Forsker
24. juli 2004 - 00:05 #12
QuickRep1.QRPrinter.Load('test.qrp');//virker ikke altid mærkeligt

en anden måde at gøre det på er at bruge et twebbrowser, som henter filen test.htm
i biblioteket hvor basisprogrammet er. Så undgår du at bruge Quickrapport.

I dit hovedprogram bruger du en quickrapport og smider en qrhtmfilter på så kan den gemmes som *.htm.

Lav de forskellige udprint muligheder og gem dem i forskellige biblioteker.
Avatar billede whynot Nybegynder
26. juli 2004 - 10:16 #13
øhmm.. okey.. jeg skal lige være sikker på at jeg forstår dig ret..

du siger at jeg skal bruge to programmer - et hovedprogram (som jeg kalder grundprogrammet) og et basisprogram?

Hovedprogrammet skal i dit forslag generere udprintsmulighederne vha. quickreport og gemme dem som "htm" - som hovedprogrammet kan importere vha. qrhtmfilter.

... øhm hvorfor det?
Avatar billede whynot Nybegynder
26. juli 2004 - 10:23 #14
så vidt jeg kan se i hjælpen til quickreport.. så giver det blot brugerne muligheden for at gemme et udprint som html.. øhmm er det rigtigt så var det jo ikke helt det som min tanke var.
Avatar billede stone Forsker
26. juli 2004 - 18:47 #15
det var bare en tanke....

har brugeren adgang til databasen, her tænker jeg på om de selv kan vælge data som skal udprintes, for så er det en anden historie, da dataerne så skal oprettes dynamisk i quickreport.
Avatar billede whynot Nybegynder
26. juli 2004 - 20:13 #16
de har adgang til databasen.. og ja dataen skal oprettes dynamisk.. og ja quickreport kan bruges hertil.

Men hvor gemmer jeg disse filer som du talte om fra starten?
..og næsten mere vigtigt hvordan initialiseres de igen af en procedure (altså indlæses).?
Avatar billede whynot Nybegynder
26. juli 2004 - 20:16 #17
... jeg mente selvfølgelig.. hvor gemmer jeg filerne fra?
Avatar billede stone Forsker
26. juli 2004 - 21:08 #18
det med at gemme filerne dur ikke da de skal oprettes dynamisk, hvis der ikke er mange brugere vil det vel være nemmere at lave flere programmer med de ønskede udprintmuligheder.
Avatar billede whynot Nybegynder
26. juli 2004 - 21:12 #19
he he.. det er jeg sikker på at du har ret i.. Men jeg vil gerne prøve at opdele systemet i "moduler" dels fordi jeg synes det vil være "lettere" i det lange løb.. dels fordi jeg gerne vil lære den disciplin at opdele et program i et grundprogram med delmoduler.
Avatar billede stone Forsker
26. juli 2004 - 22:52 #20
så skal du kigge på dll filer..

her er en godt eksempel på brugen af dll filer

http://www.pythia.dk/artikler/vis_artikel.php?id=23
Avatar billede whynot Nybegynder
27. juli 2004 - 14:33 #21
hmm ja det ser smart ud.. men jeg har lidt svært ved at "dreje"/forstå samspillet mellem quickreport udskrifter og call procedure.. altså hvordan ligger man et punkt ind i en menu.. give dem et navn.. og få disse til at komme fra et rekursivt kald gennem et direktiv af dll-filer.

Så vidt jeg kan forstå skal der være én funktion tilgængelig til eksport fra dll-filen og det er .print

..er det rigtig forstået?
Avatar billede stone Forsker
27. juli 2004 - 19:49 #22
ja det er rigtigt....
hvis du har læst mit link, vil du kunne se at du kan configurere dit program via en dll fil, procedure i en dll fil er de samme som ved et alm project.

se http://www.swissdelphicenter.ch/en/showcode.php?id=812

for at create dynamisk items..

de items eller datafelter skal også oprettes i quickreport, hvordan man opretter dynamiske felter i quickrapport er jeg ikke stiv i.

Men det er ikke nødvendigt at lade dll filen bestemme hvilke dynamiske felter der skal være i quickrapport, det kan gøres i forbindelse med at dll filen er indlæst og
opretter de datafelter som er defineret udfra de menuitems.
Avatar billede whynot Nybegynder
27. juli 2004 - 20:02 #23
okey fino.. så har jeg et sidste spørgsmål..!

Basisprogrammet skal vel kende ALLE function/procedure som bliver eksporteret fra de forskellige DLL-filer på forhånd - eller kan disse også tildeles basisprogrammet dynamisk?

Så vidt jeg kan se er det kun en gennemgang af hvilke der eksisterer og derved kan man udelukke de eksporterede function/procedure fra de DLL filer som ikke er tilstede.

Men hvis nu jeg finder på at lave én udskriftsmulighed ekstra eller tilføje en function mere på en af de eksisterende. Så skal jeg også rette i basisprogrammet fordi DLL filer ikke ligger op til objektorienteret programering... eller er jeg helt galt i byen.?
Avatar billede stone Forsker
27. juli 2004 - 20:23 #24
nej det er ikke nødvendigt, da det er dll filerne som bestemmer hvordan basisprogrammet kommer til at se ud, det er derfor det er godt at bruge dll filer
de kan stort set styre hele opsætningen. jeg mener at man kan dynamisk oprette hvad som helst, som man kan i et alm project. dvs du kan oprette forms labels osv..
Avatar billede whynot Nybegynder
29. juli 2004 - 21:30 #25
okey.. jeg har nu de sidste to dage forsøgt at forstå denne problemstilling.. og jeg kan simpelthen ikke få det til at fungere.

Mit problem er som følger: når jeg skal importere en funktion fra en dll-fil - skal den jo erklæres inden jeg kompiler mit basisprogram. Eller kan jeg gøre dette på samme tid når jeg gennemløber et direktiv for dll-filer.? derved bliver dll-filer smarte fordi jeg derved kan lave en generel funktion for hvad der sker når man støder på en dll-fil.

Jeg tror der er tale om et forståelsesproblem fra min side.. og at jeg blot ikke ved hvordan man erklærer en procedure eller en function dynamisk efter at man har kompileret et program.

For Ja dll-filer virker smarte og bestemt hen af hvad jeg gerne ville have.. men hvis man skal kende alle funktioner og procedurer på forhånd i basisprogrammet - jamen så kan jeg ikke se hvordan jeg tilføjer ekstra guf til et program idet de ikke vil blive anvendt før en updatering af basisprogrammet ligeledes frigives. I så fald er der blot tale om en hysterisk facon at dele et program op på.. og det virker da lidt skørt.

plz - skær det ud i pap for mig.!
Avatar billede stone Forsker
30. juli 2004 - 13:26 #26
ja de skal erklæres:

For at kunne kalde disse funktioner fra applicationen er du nødt til at erklære de nye datatyper, der modsvarer dem i DLL'en,

som du også kunne læse i
http://www.pythia.dk/artikler/vis_artikel.php?id=24
//iøvrigt en rigtig godt artikel fra borrisholt//

som beskrevet er dll en god ide at bruge da man kan have 2 programmer eller mere i samme program da det er dll filerne som bestemmer. tror du forvirre dig selv ved at du mener du skal gentage kode fra dll og dit program.
Avatar billede whynot Nybegynder
10. august 2004 - 11:20 #27
Hej så er jeg tilbage fra en lille sen ferie.

..du har ret lækre artikler på boris's side... MEN der er et springende punkt hvor jeg tror jeg gør tingene sværerer end de er. Og jo jeg er sikker på at jeg gør tingene MEGET sværer end de i virkeligheden er. Men sådan er det vel altid før tingene falder på plads rent forståelsesmæssigt.

Anyway.. det som jeg ikke fatter er følgende:

Hvis mine funktioner i dll-filerne skal erklæres i grundprogrammet før dll-filerne er færdige/udtænkt.. er det ikke et hønen-og-ægget problem? Hvordan skal jeg erklære funktioner som jeg endnu ikke kender?

Kan forvente at dll-filerne selv kender dem og at man kan lave en dynamisk binding til dem som et objekt? .. i så fald hvordan gør man det?

MEN hvis man forudsætter at jeg kender alle funktionerne på forhånd og erklærer dem i grundprogrammet så har jeg problemet med "Tnotify og pointer". Problemet opstår når jeg prøver at tilføje onclick rutiner på en knap eller en menu.. disse "kræver" en Tnotify eller en allerede erklæret procedure/function. Hvordan løser man dette problem?
Avatar billede Slettet bruger
10. august 2004 - 13:26 #28
velkommen tilbage... *SS*

den ret dybere brug af dll filer.. så skal du nok stile dit spørgsmål til boriholt.

Jeg har kun den ren teoretiske viden, da jeg kun har lavet få simple dll filer.
Avatar billede Slettet bruger
10. august 2004 - 13:51 #29
hov...
det var min piges profil jeg kommenterede med, glemte lige at logge ud.
//stone
Avatar billede whynot Nybegynder
10. august 2004 - 17:42 #30
hmmm det var da ærgeligt.. men så vil jeg prøve at stille ham spørgsmålet.. du får dog stadig points for gode kommentarer og en god sparring - tak for det :)
Avatar billede whynot Nybegynder
10. august 2004 - 17:42 #31
hov du skal lige give et svar ;)
Avatar billede stone Forsker
10. august 2004 - 17:56 #32
svar..
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