/ 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
compileringsvariabler ind i kode?
Fra : CykelSmeden fra Aalb~


Dato : 14-05-02 20:56

Jeg kunne godt tænke mig at lægge eks. dato-tid for kompileringstidspunket
ind i en variabel, som eks. kan vises på request i programmet.
Kan dette gøres automatisk?
Jeg har aldrig set kode til sådant. Det må vel i givet fald være en slags
compilerdirektiv?

finn

--
--- CykelSmeden.... edb på gadeplan

Hvis intet er anført, taler jeg om RH 7.1
og når jeg spørger, er det bare fordi jeg ved for lidt!



 
 
R. A. Larsen (15-05-2002)
Kommentar
Fra : R. A. Larsen


Dato : 15-05-02 05:39

"CykelSmeden fra Aalborg" <outlook@acnord.SLET.dk> wrote:
>
> Jeg kunne godt tænke mig at lægge eks. dato-tid for kompileringstidspunket
> ind i en variabel, som eks. kan vises på request i programmet.
> Kan dette gøres automatisk?

Både ja og nej. Hvis du mener inde fra editoren, så nej (jeg har ikke fundet
det. Det kan dog godt være at der er nogen, som har skrevet en ekspert).

Hvis du bruger Delphi, Turbo Pascal eller Borland Pascal, kan du bruge
programmet MAKE sammen med henholdsvis DCC.EXE/DCC32.EXE, TPC.EXE og BPC.EXE
til at oversætte programmet. Her er et lille eksempel til Delphi (der er ikke
ret stor forskel på Delphi, TP og BP):

<*** MAKEFILE ***>
default: tyt.exe

tyt.exe: tyt.dpr test.inc
dcc32 tyt.dpr

test.inc: tyt.dpr
echo const COMPDATOTID='%_date %_time'; > test.inc
<*** End of File ***>

<*** TYT.DPR ***>
program TYT;
{$APPTYPE CONSOLE}
{$I test.inc}
begin
WriteLn(COMPDATOTID);
end.
<*** End of File ***>

I stedet for kommandoen "echo const COMPDATOTID='%_date %_time';" i MAKEFILE
(den bruger 4DOS specifikke kommandoer til at give dato og tid) kan du lave et
lille program til at give den ønskede information på STDOUT. Du kan endda lade
ovennævnte program lave en hel unit. Det her er kun et meget simpelt eksempel
for at vise fremgangsmåden.

Når du nu retter filen TYT.DPR og kalder MAKE, kan du se at filen TEST.INC
bliver lavet før TYT.DPR bliver kompileret.

Husk at filen med compileringstidspunktet (her test.inc) skal afhænge af alle
de filer du bruger i programmet. Ellers bliver den ikke opdateret, når filerne
ændrer sig.

<surt opstød>
Hvorfor har Borlands lavet om på syntaksen i deres MAKE-filer i forhold til
UNIX MAKE-filer?
</surt opstød>

MVH, René
--
Using Virtual Access
http://www.vamail.com


CykelSmeden fra Aalb~ (15-05-2002)
Kommentar
Fra : CykelSmeden fra Aalb~


Dato : 15-05-02 16:34

------snip
> Husk at filen med compileringstidspunktet (her test.inc) skal afhænge
> af alle de filer du bruger i programmet. Ellers bliver den ikke
> opdateret, når filerne ændrer sig.
>
> <surt opstød>
> Hvorfor har Borlands lavet om på syntaksen i deres MAKE-filer i
> forhold til UNIX MAKE-filer?
> </surt opstød>
>
> MVH, René

Tak for et spændende tip. Jeg vil studere lidt i den, da den ser rimeligt
logisk ud.

finn




Hans Milling (15-05-2002)
Kommentar
Fra : Hans Milling


Dato : 15-05-02 15:26

"CykelSmeden fra Aalborg" <outlook@acnord.SLET.dk> wrote in message news:<3ce16bb9$0$18629$edfadb0f@dspool01.news.tele.dk>...
> Jeg kunne godt tænke mig at lægge eks. dato-tid for kompileringstidspunket
> ind i en variabel, som eks. kan vises på request i programmet.
> Kan dette gøres automatisk?
> Jeg har aldrig set kode til sådant. Det må vel i givet fald være en slags
> compilerdirektiv?
>
> finn

Jeg har hurtigt lavet en simpel console application som du måske kan
bruge. Den finder din .exe fil og skriver det tidsstempel den har
(bliver sat når filen oprettes/ændres) og det må vel være compiler
tidspunktet ikke?

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

var
SR : TSearchRec;
DT : TDateTime;

begin
if FindFirst(ParamStr(0), faAnyFile, SR) = 0 then // ParamStr(0)
peger altid på den prorammet selv.

begin
DT:=FileDateToDateTime(SR.Time);
Writeln('Filen er sidst ædnret/compilet: ',DateTimeToStr(DT));
end;
ReadLn;
end.

CykelSmeden fra Aalb~ (15-05-2002)
Kommentar
Fra : CykelSmeden fra Aalb~


Dato : 15-05-02 16:37

Hans Milling wrote:
> program Project1;
>
> {$APPTYPE CONSOLE}
>
> uses
> SysUtils;
>
> var
> SR : TSearchRec;
> DT : TDateTime;
>
> begin
> if FindFirst(ParamStr(0), faAnyFile, SR) = 0 then // ParamStr(0)
> peger altid på den prorammet selv.
>
> begin
> DT:=FileDateToDateTime(SR.Time);
> Writeln('Filen er sidst ædnret/compilet: ',DateTimeToStr(DT));
> end;
> ReadLn;
> end.

Tak for tippet, som er lækkert kort. Jeg skal lige finde ud af hvordan du
mener jeg så får outputtet puttet ind i en var i koden før kompileringen.
(med mindre du mener klippe/klistre?)
hilsen
finn



R. A. Larsen (15-05-2002)
Kommentar
Fra : R. A. Larsen


Dato : 15-05-02 22:52

"CykelSmeden fra Aalborg" <outlook@acnord.SLET.dk> wrote:
>
> Tak for tippet, som er lækkert kort. Jeg skal lige finde ud af hvordan du
> mener jeg så får outputtet puttet ind i en var i koden før kompileringen.
> (med mindre du mener klippe/klistre?)
> hilsen
> finn

Jeg tror han mener at du kan bruge det til at læse det i dit eget program mens
det kører. Problemet er så, hvis denne dato ændrer sig pga. noget brugeren
laver.

Der findes faktisk tre forskellige datoer (under Win95): "Access", "Creation"
og "Written" (faktisk "Modification"). Når du kører programmet, ændrer "Access"
sig og når du kopierer programmet, ændrer "Creation" sig. Du skal altså nok
have fat i "Written". Spørgsmålet er så, om den også kan ændre sig. Efter min
mening er alle tre datoerne ubrugelige (jeg sætter faktisk alle tre datoer på
nogle filer, som helst skal læses i en bestemt rækkefølge. Så kommer de helt
automatisk frem i den rigtige rækkefølge).

MVH, René
--
Using Virtual Access
http://www.vamail.com


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

Månedens bedste
Årets bedste
Sidste års bedste