1. Teenpä kuvankatseluohjelmaa, jota pitäisi pystyä käyttämään suoraan tiedoston käynnistyksen yhteydessä, eli esim. kun kuvankatseluohjelma on liitetty tiedostotyypeistä vaikka .jpg -päätteeseen ja .jpg -tiedosto avataan suoraan kansiosta, kuvaselain käynnistyy ja näyttää kyseisen kuvan. Ongelma on sen etten tiedä miten kuvaselaimen saisi näyttämään kuva Image -komponentissa. Liittyyköhän tämä viestien käsittelyyn?
2. Delphin kääntäjän suora käyttö. Bin -kansiosta löytyi tällainen dcc32.exe, jonka pitäisi pystyä kääntämään delphi -projekti suoraan. Mutta kun siihen syöttää komentorivillä parametriksi pelkän projektin polkuineen, kääntäjä sanoo että 'Fatal error eipä löydy tämmöistä kuin "system.pas"'. Parametreiksi pitää varmaan syöttää Delphin oletuskansiot, mutta miten, kysyn minä.
Avattavan tiedoston nimi annetaan parametrina ohjelman käynnistyksen yhteydessä
Projektin lähdekoodiin (Project->View Source):
begin Application.Initialize; Application.CreateForm(TMainForm, MainForm); if ParamCount>0 then begin try MainForm.Image.Picture.LoadFromFile(ParamStr(1)); except on E: EInvalidGraphic do begin MessageDlg('Unknown picture file extension ('+LowerCase(ExtractFileExt(ParamStr(1)))+')', mtError, [mbOK],0); Application.Terminate; end; end; end; Application.Run; end.
Aja dcc32 ilman parametreja niin saata apua:
C:\>dcc32 Borland Delphi Version 14.0 Copyright (c) 1983,2001 Borland Software Corporation Syntax: dcc32 [options] filename [options] -A<unit>=<alias> = Set unit alias -LU<package> = Use package -B = Build all units -M = Make modified units -CC = Console target -N<path> = DCU output directory -CG = GUI target -O<paths> = Object directories -D<syms> = Define conditionals -P = look for 8.3 file names also -E<path> = EXE output directory -Q = Quiet compile -F<offset> = Find error -R<paths> = Resource directories -GD = Detailed map file -U<paths> = Unit directories -GP = Map file with publics -V = Debug information in EXE -GS = Map file with segments -VR = Generate remote debug (RSM) -H = Output hint messages -W = Output warning messages -I<paths> = Include directories -Z = Output 'never build' DCPs -J = Generate .obj file -$<dir> = Compiler directive -JP = Generate C++ .obj file --help = Show this help screen -K<addr> = Set image base addr --version = Show name and version Compiler switches: -$<letter><state> (defaults are shown below) A8 Aligned record fields P+ Open string params B- Full boolean Evaluation Q- Integer overflow checking C+ Evaluate assertions at runtime R- Range checking D+ Debug information T- Typed @ operator G+ Use imported data references U- Pentium(tm)-safe divide H+ Use long strings by default V+ Strict var-strings I+ I/O checking W- Generate stack frames J- Writeable structured consts X+ Extended syntax L+ Local debug symbols Y+ Symbol reference info M- Runtime type info Z1 Minimum size of enum types O+ Optimization
edit: typoja
Ei nyt ole tässä Delphiä edessä, mutta:
1. Eikö noita ParamCount- ja ParamStr-funktioita voisi käyttää ihan FormCreate-proseduurin sisällä? Ei tarvitsisi projektin koodiin koskea...
2. Kuten yllä neuvottiin. Jos kuitenkin tarkoituksena sattuisi olemaan GUI-ohjelmien tekeminen ilman drag'n'drop-systeemiä, voi olla helpompaa vain luoda ohjelmansa konsoliohjelmana, poistaa APPTYPE-direktiivi (tai vaitaa tyypiksi GUI) ja lisätä tarvittavat Unitit (Windows, ...).
Ensimmäinen ongelma ratkesi.
Toinen ongelma on lähinnä vain se, etten ymmärrä mitään tuosta yllä olevasta taulukosta tai siitä, mitä Metabolix juuri sanoi. Että jos vain viitsisitte vääntää rautalangasta tämän asian...
Tarvitsen kääntäjää siksi, koska teen dynaamista linkkikirjastoresurssikääntäjää, eli siis ohjelmaa joka sisällyttää resurssitiedoston linkkikirjastoprojektiin ja kääntää sen itsenäiseksi kirjastoksi.
Muokkaa dcc32.exen kanssa samassa kansiossa (bin) olevaa tiedostoa DCC32.CFG (tai luo se, jos sitä ei ole). Sinne voi laittaa kääntäjän asetuksia tuon taulukon ohjeiden mukaan.
Pääosan asetuksista voit kopioida valmiista cfg-tiedostosta. Jos tuota dcc32.cfg:tä ei ole / se on tyhjä, avaa jonkin tallennetun projektin kansiosta löytyvä *.cfg.
/IC:\Delphi\Include
/I määrittelee include-kansion (en nyt tosiaan muista, miten nuo Delphissä menevät). Tämä pitää varmaankin lisätä. Jos kansiopolussa on välejä, polku pitää laittaa "lainausmerkkeihin"
Nyt se luo dll:än, mutta silti tulee virheilmoitus siitä, ettei "system.dcu":a löydy.
Aihe on jo aika vanha, joten et voi enää vastata siihen.