|
| 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
| |
|
|