/ 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
mellemrum i systemkald
Fra : Jacob Simonsen


Dato : 25-03-03 19:00

Hej,

Jeg vil gerne udføre følgende system kald:

system("\"c:\\Program Files\\SAS Institute\\SAS\\V8\\sas\" -config
\"c:\\Program Files\\SAS Institute\\SAS\\V8\\sas\\v8.cfg\" -sysin
sas_file.sas -nosplash");

Hvis jeg skriver en tilsvarende kommando i en prompt virker skidtet, men når
jeg vil kalde den fra c++ klager den over mellemrummet mellem "program" og
"files", og "sas" og "institute".

Er der nogen der ved hvordan man kan omgå mellemrummene?

Jacob






 
 
Kosta (24-03-2003)
Kommentar
Fra : Kosta


Dato : 24-03-03 19:11

Jeg er ikke helt sikker men jeg mener at man skal sætte en \ hver gang
man skifter linie

Jacob Simonsen wrote:
> Hej,
>
> Jeg vil gerne udføre følgende system kald:



system("\"c:\\Program Files\\SAS Institute\\SAS\\V8\\sas\" -config \
\"c:\\Program Files\\SAS Institute\\SAS\\V8\\sas\\v8.cfg\" -sysin \
sas_file.sas -nosplash");




> Hvis jeg skriver en tilsvarende kommando i en prompt virker skidtet, men når
> jeg vil kalde den fra c++ klager den over mellemrummet mellem "program" og
> "files", og "sas" og "institute".
>
> Er der nogen der ved hvordan man kan omgå mellemrummene?
>
> Jacob


Bertel Lund Hansen (24-03-2003)
Kommentar
Fra : Bertel Lund Hansen


Dato : 24-03-03 20:32

Jacob Simonsen skrev:

>Jeg vil gerne udføre følgende system kald:

Jeg kan ikke hjælpe dig med dit egentlige problem.

>system("\"c:\\Program Files\\SAS Institute\\SAS\\V8\\sas\" -config
>\"c:\\Program Files\\SAS Institute\\SAS\\V8\\sas\\v8.cfg\" -sysin
>sas_file.sas -nosplash");

Den slags bliver meget mere overskueligt hvis man benytter
skråstreg i stedet for bagstræb ... øh bagstreg.

system("\"c:/Program Files/SAS Institute/SAS/V8/sas\" ... osv

>Er der nogen der ved hvordan man kan omgå mellemrummene?

Hvilken compiler bruger du?
(Jeg kan stadig ikke hjælpe dig, men system() er måske ikke vildt
standardiseret?)

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Jacob Simonsen (25-03-2003)
Kommentar
Fra : Jacob Simonsen


Dato : 25-03-03 21:55


"Jacob Simonsen" <simonsen@europe.dk> skrev i en meddelelse
news:b5nhd0$cjm$1@sunsite.dk...
> Hej,
>
> Jeg vil gerne udføre følgende system kald:
>
> system("\"c:\\Program Files\\SAS Institute\\SAS\\V8\\sas\" -config
> \"c:\\Program Files\\SAS Institute\\SAS\\V8\\sas\\v8.cfg\" -sysin
> sas_file.sas -nosplash");
>
> Hvis jeg skriver en tilsvarende kommando i en prompt virker skidtet, men
når
> jeg vil kalde den fra c++ klager den over mellemrummet mellem "program" og
> "files", og "sas" og "institute".
>
> Er der nogen der ved hvordan man kan omgå mellemrummene?
>
> Jacob
>
>

----- Original Message -----
From: "Bertel Lund Hansen" <nospamfor@lundhansen.dk>
Newsgroups: dk.edb.programmering.c
Sent: Monday, March 24, 2003 8:32 PM
Subject: Re: mellemrum i systemkald


> Jacob Simonsen skrev:
>
> >Jeg vil gerne udføre følgende system kald:
>
> Jeg kan ikke hjælpe dig med dit egentlige problem.
>
> >system("\"c:\\Program Files\\SAS Institute\\SAS\\V8\\sas\" -config
> >\"c:\\Program Files\\SAS Institute\\SAS\\V8\\sas\\v8.cfg\" -sysin
> >sas_file.sas -nosplash");
>
> Den slags bliver meget mere overskueligt hvis man benytter
> skråstreg i stedet for bagstræb ... øh bagstreg.
>
> system("\"c:/Program Files/SAS Institute/SAS/V8/sas\" ... osv
>
> >Er der nogen der ved hvordan man kan omgå mellemrummene?
>
> Hvilken compiler bruger du?
> (Jeg kan stadig ikke hjælpe dig, men system() er måske ikke vildt
> standardiseret?)
>
ok, problemet var måske ikke formuleret særlig godt. programmet bliver
compileret korrekt uden nogen fejlmeddelser, men når jeg kører programmet
får jeg en melding om at stien jeg henviste til i systemkaldet er forkert,
selv om den er korrekt. Jeg er sikker på at det skyldes mellemrummene der
forekommer i stien.
hilsen
ps. jeg skriver i dev-c++, men jeg ved ikke hvilken compiler den benytter.
> --
> Bertel
> http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/

>
>
>



Bertel Lund Hansen (24-03-2003)
Kommentar
Fra : Bertel Lund Hansen


Dato : 24-03-03 23:41

Jacob Simonsen skrev:

[Jeg skrev:]

>> Hvilken compiler bruger du?
>> (Jeg kan stadig ikke hjælpe dig, men system() er måske ikke vildt
>> standardiseret?)

>ok, problemet var måske ikke formuleret særlig godt.

Jo, det var skam ikke svært at forstå, men med min begrænsede
viden kunne jeg *forestille* mig at compileren har en begrænsning
over for mellemrum selv om slutsystemet godt kan håndtere dem.
Det var derfor jeg spurgte til hvilken du brugte.

Jeg bruger selv Borlands BCPP 5.5 og har lige testet. Den kan
læse og skrive filer med mellemrum i filnavnene uden problemer.
Jeg kan også bruge system() med mellemrum i parametrene.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Anders (25-03-2003)
Kommentar
Fra : Anders


Dato : 25-03-03 17:06


> Jeg bruger selv Borlands BCPP 5.5 og har lige testet. Den kan
> læse og skrive filer med mellemrum i filnavnene uden problemer.
> Jeg kan også bruge system() med mellemrum i parametrene.

Jow, men er det ikke fordi du kører xp/2000 ? Hvis han bruger win98 eller
derunder har han jo ikke cmd, men kun command.com, som jo ikke er så glad
for mellemrum. Eller bare bruger command under xp/2000 ....

//Anders



Anders (25-03-2003)
Kommentar
Fra : Anders


Dato : 25-03-03 17:11

D'oh, han har jo sagt at det virker fint i en prompt :)



Jacob Simonsen (26-03-2003)
Kommentar
Fra : Jacob Simonsen


Dato : 26-03-03 20:19


"Anders" <andersg@adslhome.dk> skrev i en meddelelse
news:3e807e66$0$24653$edfadb0f@dread14.news.tele.dk...
>
> > Jeg bruger selv Borlands BCPP 5.5 og har lige testet. Den kan
> > læse og skrive filer med mellemrum i filnavnene uden problemer.
> > Jeg kan også bruge system() med mellemrum i parametrene.
>
> Jow, men er det ikke fordi du kører xp/2000 ? Hvis han bruger win98 eller
> derunder har han jo ikke cmd, men kun command.com, som jo ikke er så glad
> for mellemrum. Eller bare bruger command under xp/2000 ....
>
> //Anders
>

programmet bliver skrevet i windows xp, og kan hverken køres på xp eller
2000.
cmd, hvad er det?
Jacob




Bertel Lund Hansen (25-03-2003)
Kommentar
Fra : Bertel Lund Hansen


Dato : 25-03-03 22:02

Jacob Simonsen skrev:

>cmd, hvad er det?

NT's, 2000's og XP's kommandofortolker.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Jacob Simonsen (26-03-2003)
Kommentar
Fra : Jacob Simonsen


Dato : 26-03-03 22:36

Jeg forstår det ikke helt,

det kan ikke være den samme kommandofortolker der benyttes i den
kommandoprompt man kan få frem i xp som den kommandofortolker der benyttes
til kommandoer fra system( ) i c++.

Mit problem kan også formuleres således.
hvis jeg vil åbne et program gennem c++. så er der ingen problemer hvis
stien til programmet ikke indeholder mellemrum. men er der mellemrum får jeg
en fejlmelding når jeg kører programmet. Stien er ugyldig.


jacob

"Bertel Lund Hansen" <nospamfor@lundhansen.dk> skrev i en meddelelse
news:6tg18v8nmhlaou0v733uc1827ak4vufqr9@news.stofanet.dk...
> Jacob Simonsen skrev:
>
> >cmd, hvad er det?
>
> NT's, 2000's og XP's kommandofortolker.
>
> --
> Bertel
> http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/



Bertel Lund Hansen (27-03-2003)
Kommentar
Fra : Bertel Lund Hansen


Dato : 27-03-03 08:09

Jacob Simonsen skrev:

>det kan ikke være den samme kommandofortolker der benyttes i den
>kommandoprompt man kan få frem i xp som den kommandofortolker der benyttes
>til kommandoer fra system( ) i c++.

Jo, det er. Jeg ved det fordi jeg har patchet min
Win98-command.com så jeg får blå baggrund i en Dosboks og ikke
sort. Når jeg kalder system() med en "cls", får boksen blå
baggrund.

>Mit problem kan også formuleres således.
>hvis jeg vil åbne et program gennem c++. så er der ingen problemer hvis
>stien til programmet ikke indeholder mellemrum. men er der mellemrum får jeg
>en fejlmelding når jeg kører programmet. Stien er ugyldig.

Ja, det er sært. Jeg gætter på at fejlen kommer i den 'kanal' der
er fra C til c(o)m(man)d - at der er en eller anden dims der
klipper argumentet op hvis der er mellemrum inden det afleveres
til c(o)m(man)d.

Jeg kan ikke afprøve den kommando du prøver at udføre, men prøv
at lave et simpelt program med f.eks.

   system("dir \"/test test/*.*\");

for at se om mellemrummet er problemet.
(Mappen "test test" skal naturligvis oprettes og have et indhold)

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Bertel Lund Hansen (25-03-2003)
Kommentar
Fra : Bertel Lund Hansen


Dato : 25-03-03 20:47

Anders skrev:

>Jow, men er det ikke fordi du kører xp/2000 ?

Næ, for jeg kører 98 på min hovedcomputer.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

H3nrik V! (26-03-2003)
Kommentar
Fra : H3nrik V!


Dato : 26-03-03 12:52

"Anders" <andersg@adslhome.dk> wrote in message
news:3e807e66$0$24653$edfadb0f@dread14.news.tele.dk

> Jow, men er det ikke fordi du kører xp/2000 ? Hvis han bruger win98
> eller derunder har han jo ikke cmd, men kun command.com, som jo ikke
> er så glad for mellemrum. Eller bare bruger command under xp/2000 ....

Hmmm.. Kunne man ikke prøve at omgå problemet, ved at undgå mellmerummene -
altså skrive program files som progra~1 - i bedste MS-DOS stil?


--
/H3nrik V!

If it ain't broken break it. Then - fix it...!



Ole Nielsby (26-03-2003)
Kommentar
Fra : Ole Nielsby


Dato : 26-03-03 17:32


Henrik V! <vernerboNO@SPAMhotmail.com> skrev:

> Hmmm.. Kunne man ikke prøve at omgå problemet, ved at
> undgå mellmerummene -
> altså skrive program files som progra~1 - i bedste MS-DOS stil?

Jo, det er en mulighed - brug i givet fald GetShortPathName til
at skaffe MS-DOS-navnet. Men det er tudegrimt... overvej om
du ikke skal bruge en anden funktion til at kalde programmet
med (der er forskellige muligheder i win32-apiet.)

Á&f/ON


Bertel Brander (24-03-2003)
Kommentar
Fra : Bertel Brander


Dato : 24-03-03 23:29

Jacob Simonsen skrev:
> Hej,
>
> Jeg vil gerne udføre følgende system kald:
>
> system("\"c:\\Program Files\\SAS Institute\\SAS\\V8\\sas\" -config
> \"c:\\Program Files\\SAS Institute\\SAS\\V8\\sas\\v8.cfg\" -sysin
> sas_file.sas -nosplash");
>
> Hvis jeg skriver en tilsvarende kommando i en prompt virker skidtet, men når
> jeg vil kalde den fra c++ klager den over mellemrummet mellem "program" og
> "files", og "sas" og "institute".
>
> Er der nogen der ved hvordan man kan omgå mellemrummene?
>

Jeg vil foreslå følgende til debugging:

char command[] =
""\"c:\\Program Files\\SAS Institute\\SAS\\V8\\sas\" -config"
" \"c:\\Program Files\\SAS Institute\\SAS\\V8\\sas\\v8.cfg\" -sysin"
" sas_file.sas -nosplash";
printf("My command: %s\n", command);
system(command);

Bemærk:
1: Jeg har lavet mellemrum efter -config og efter -sysin.
2: Hver linie text er i sin egen "".

Jeg tror ikke det er mellemrummene der giver problemer.

HTH

/bertel
--
Bertel Brander, author of Wain, a free texteditor for programmers:
http://home20.inet.tele.dk/midgaard/program.htm




Per Abrahamsen (25-03-2003)
Kommentar
Fra : Per Abrahamsen


Dato : 25-03-03 16:01

"Jacob Simonsen" <simonsen@europe.dk> writes:

> Jeg vil gerne udføre følgende system kald:

Med "system" er du afhængig af en shell til at fortolke strengen.
Måske skulle du prøve en af spawn* functionerne i stedet for? Her er
du selv i kontrol.

Peer Jensen (27-03-2003)
Kommentar
Fra : Peer Jensen


Dato : 27-03-03 22:22

"Jacob Simonsen" <simonsen@europe.dk> skrev i en meddelelse
news:b5nhd0$cjm$1@sunsite.dk...
> Hej,
>
> system("\"c:\\Program Files\\SAS Institute\\SAS\\V8\\sas\" -config
> \"c:\\Program Files\\SAS Institute\\SAS\\V8\\sas\\v8.cfg\" -sysin
> sas_file.sas -nosplash");
>
> Hvis jeg skriver en tilsvarende kommando i en prompt virker skidtet, men
når
> jeg vil kalde den fra c++ klager den over mellemrummet mellem "program" og
> "files", og "sas" og "institute".
>
> Er der nogen der ved hvordan man kan omgå mellemrummene?

Du skal omgå dine: \" (= Double quotation mark) a la
system("c:\\Program Files\\SAS Institute\\SAS\\V8\\sas -config c:\\Program
Files\\SAS Institute\\SAS\\V8\\sas\\v8.cfg -sysin sas_file.sas -nosplash");

Jeg formoder du kalder et program (SAS) med 5 parametre!?

--
/Peer

It's not a bug... - it's a feature!




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

Månedens bedste
Årets bedste
Sidste års bedste