/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Funktion der giver systemdatoen(dagsdato?)~
Fra : Borg


Dato : 29-09-02 13:10

Hej

Jeg skal sende noget data fra IBM MQSeries over i Navision og skal derfor
kode lidt i C/C++.
Jeg har kodet noget, men det jeg mangler er en funktion som giver
systemdatoen i en streng, så jeg kan bruge den som parametre
i en anden funktion

altså:

function blabla(bla,bla,DATOFUNCTION());

Hvordan laver jeg sådan en funktion?????????

Og kan man det i C/C++? eller skal resultatet fra datofunktionen gemmes i en
variable, som så skal tages med som parameter?

Jeg har kun rodet med C/C++ i lidt over en uge og det volder nogen
problemer, da C/C++ ikke ligner noget jeg har arbejdet med før.

Jeg bruger Microsoft Visual C++ 6.0

MVH

Steffen





 
 
Byrial Jensen (29-09-2002)
Kommentar
Fra : Byrial Jensen


Dato : 29-09-02 19:33

Borg <Forgetit@dk.com> skrev:
> Hej
>
> Jeg skal sende noget data fra IBM MQSeries over i Navision og skal derfor
> kode lidt i C/C++.
> Jeg har kodet noget, men det jeg mangler er en funktion som giver
> systemdatoen i en streng, så jeg kan bruge den som parametre
> i en anden funktion
>
> altså:
>
> function blabla(bla,bla,DATOFUNCTION());
>
> Hvordan laver jeg sådan en funktion?

For eksempel sådan her:

#include <stdlib.h>
#include <time.h>

const char *get_time_string (void)
{
static char streng[] = "ÅÅÅÅ-MM-DD"; // Initialiseringen har til formål
// at angive den ønskede strenglængde

time_t tid = time (0); // Systemtid som et heltal (antal sekunder
// siden et bestemt tidspunkt).

struct tm *tm = localtime (&tid); // Omsæt værdien til en struct
// med felter for år/måned/dag/time/minut/sekund
       // og omregn til den lokale tidszone.

size_t len = strftime (streng, sizeof streng, "%Y-%m-%d", tm);
// Omsæt til en tekst med det angivne format

if (! len)
{
// Strengen var kortere end nødvendigt og har nu udefineret indhold
abort ();
}

return streng;
}

Bemærk at det er samme statiske streng-pointer som returneres ved
hvert kald. Det betyder at resultatet af et kald kun er gyldigt
indtil næste kald, og at funktionen ikke er reentrant. En kalder vil
ofte starte med at kopiere resultatet.

Alternativt kunne funktionen ved hvert kald returnere en nyallokeret
streng fra programmets heap. Det ville tvinge kalderen til at frigive
hukommelsen igen efter brug for at undgå memory leak.

> ????????

Disse blev til overs.

> Og kan man det i C/C++? eller skal resultatet fra datofunktionen gemmes i en
> variable, som så skal tages med som parameter?

Ja. En pointer til en funktion kan overføres som argument ved et
fnktionskald.

Borg (30-09-2002)
Kommentar
Fra : Borg


Dato : 30-09-02 20:34


"Byrial Jensen" <bjensen@nospam.dk> wrote in message
news:slrnapehpd.139.bjensen@ask.ask...
> Borg <Forgetit@dk.com> skrev:
> > Hej
> >
> > Jeg skal sende noget data fra IBM MQSeries over i Navision og skal
derfor
> > kode lidt i C/C++.
> > Jeg har kodet noget, men det jeg mangler er en funktion som giver
> > systemdatoen i en streng, så jeg kan bruge den som parametre
> > i en anden funktion
> >
> > altså:
> >
> > function blabla(bla,bla,DATOFUNCTION());
> >
> > Hvordan laver jeg sådan en funktion?
>
> For eksempel sådan her:
>
> #include <stdlib.h>
> #include <time.h>
>
> const char *get_time_string (void)
> {
> static char streng[] = "ÅÅÅÅ-MM-DD"; // Initialiseringen har til formål
> // at angive den ønskede strenglængde
>
> time_t tid = time (0); // Systemtid som et heltal (antal sekunder
> // siden et bestemt tidspunkt).
>
> struct tm *tm = localtime (&tid); // Omsæt værdien til en struct
> // med felter for år/måned/dag/time/minut/sekund
> // og omregn til den lokale tidszone.
>
> size_t len = strftime (streng, sizeof streng, "%Y-%m-%d", tm);
> // Omsæt til en tekst med det angivne format
>
> if (! len)
> {
> // Strengen var kortere end nødvendigt og har nu udefineret indhold
> abort ();
> }
>
> return streng;
> }
>
> Bemærk at det er samme statiske streng-pointer som returneres ved
> hvert kald. Det betyder at resultatet af et kald kun er gyldigt
> indtil næste kald, og at funktionen ikke er reentrant. En kalder vil
> ofte starte med at kopiere resultatet.
>
> Alternativt kunne funktionen ved hvert kald returnere en nyallokeret
> streng fra programmets heap. Det ville tvinge kalderen til at frigive
> hukommelsen igen efter brug for at undgå memory leak.
>
> > ????????
>
> Disse blev til overs.
>
> > Og kan man det i C/C++? eller skal resultatet fra datofunktionen gemmes
i en
> > variable, som så skal tages med som parameter?
>
> Ja. En pointer til en funktion kan overføres som argument ved et
> fnktionskald.

Tak skal du have.
Det hjalp med til at forstå nogle ting.

Mvh

Steffen



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