Slettet bruger
01. december 2005 - 17:01
Der er
88 kommentarer og 1 løsning
Begynderen vil have hjælp igen!
Hej igen eksperter! Nu har jeg fået nogenlunde fat i de mest grundlæggende funktioner i C++... Hvordan kan man åbne en fil eller ekasakvere (staves det sådan?) en applikation via C++? Hvordan kan man desuden slette in fil (eller applikation) via C++? Hvordan kan man omdøbe (kan man det?) en fil (eller applikation)?
Annonceindlæg fra Computerworld
01. december 2005 - 17:11
#1
Hvis det er Windows, kunne su "snyde" og bruge DOS commands: inkluder <iostream> og brug: system("filnavn/sti"); system("del hej.exe"); system("rename hej.exe hej2.exe");
Slettet bruger
01. december 2005 - 17:14
#2
Hehe... Prøver lige...
Slettet bruger
01. december 2005 - 17:15
#3
Hvordan kan jeg bruge variabler i disse funktioner?
Slettet bruger
01. december 2005 - 17:20
#4
Sådan: system(variabel); system("del "variabel); system("rename "variabel1" "variabel2); ?
01. december 2005 - 18:18
#5
du er nødt til at have kommandoen inde i variablen fx: #include <iostream> #include <string.h> int main() { char fil[50] = "del test.txt"; system(fil); return 0; }
01. december 2005 - 19:04
#6
system funktionen er ikke i iostream men i cstdlib cstdio har et par funktioner remove og rename som nok passer godt her char cmd[1000]; sprintf(cmd,"del %s",filnavnvar); system(cmd);
02. december 2005 - 17:53
#7
Det kan jeg sq ikke få til at du :S Er koden ikke bare: (Har bare taget så mange #include's som jeg kunne finde) #include "stdafx.h" #include <iostream> #include <string> #include <string.h> #include <stdlib.h> #include <fstream> #include <cstdlib> using namespace std; int main(){ system("C:\\Documents and Settings\\All Users"); system("rename test.exe aendret.exe"); }
02. december 2005 - 17:54
#8
kan hverkern få den til at delete eller rename ... :(
Slettet bruger
02. december 2005 - 19:36
#9
Nicolaj (zipper-znake)! I den første 'system()'-linie har du ikke valgt en fil; kun en mappe! - hehe! Den anden... Hahaha! Undskyld, men... Nåja, du har kun skrevet filnavnet; du skal skrive hele stien! - Toke
Slettet bruger
02. december 2005 - 19:39
#10
system("C:\\Documents and Settings\\All Users\\test.exe"); - Åbner 'test.exe'. system("rename C:\\Documents and Settings\\All Users\\test.exe C:\\Documents and Settings\\All Users\\aendret.exe"); - Omdøber 'test.exe' til 'aendret.exe'.
Slettet bruger
02. december 2005 - 19:39
#11
Undskyld alle, jeg kunne ikke dy mig...
Slettet bruger
02. december 2005 - 20:10
#12
Ups... Mit forslag virker heller ikke?!
02. december 2005 - 20:19
#13
system("rename \"C:\\Documents and Settings\\All Users\\test.exe\" \"C:\\Documents and Settings\\All Users\\aendret.exe\"");
03. december 2005 - 04:49
#14
og jeg synes stadigvæk at stdio funktionerne var en bedre løsning
Slettet bruger
03. december 2005 - 08:25
#15
Jeg er ikke helt med... Det du har skrevet der virker... Men dette gør ikke: #include "stdafx.h" #include <iostream> #include <string> #include <string.h> #include <stdlib.h> #include <fstream> #include <cstdlib> using namespace std; string file; string name; string command; int main() { // Skabelon: system("rename \"C:\\Documents and Settings\\All Users\\test.txt\" \"aendret.txt\""); cout << "Renamer (03-12-2005)\n\nEnter file path:\n"; cin >> file; cout << "\nEnter new name:\n"; cin >> name; cout << "\nGenerating command..."; command = "rename \"" + "\" \"" + name + "\""; cout << "\n\nCommand generated: '" << command << "'."; cout << "\n\nRenaming '" << file << "' to '" << name << "'."; system(command); }
Slettet bruger
03. december 2005 - 11:53
#16
arne_v... Dine funktioner virker også på maskiner der ikke kører Windows...?
03. december 2005 - 12:21
#17
Lol, 2, havde ikke spurgt hvis det bare var så enkelt at du kunne finde ud af det :P Men jeg håber dog virkeligt på et brugbart svar :)
03. december 2005 - 15:46
#18
rename og remove er ANSI C og virker derfor med alle styre systemer og compilere
03. december 2005 - 15:50
#19
eksmepel med renameÆ #include <iostream> #include <cstdio> using namespace std; int main() { string fnm1,fnm2; cout << "Indtast filnavn:"; getline(cin,fnm1); cout << "Indtast filnavn:"; getline(cin,fnm2); rename(fnm1.c_str(),fnm2.c_str()); return 0; }
Slettet bruger
03. december 2005 - 17:31
#20
Ok... Kan jeg få dig til at vise delete og åbn også...?
Slettet bruger
03. december 2005 - 17:33
#21
Heh... Rename virker ikke! #include <iostream> #include <cstdio> using namespace std; int main() { string fnm1,fnm2; cout << "Indtast filnavn:"; getline(cin,fnm1); cout << "Indtast filnavn:"; getline(cin,fnm2); rename(fnm1.c_str(),fnm2.c_str()); return 0; } - Det dur ik'!
03. december 2005 - 17:54
#22
det virker hos mig hvad sker der hos dig ?
Slettet bruger
03. december 2005 - 18:22
#23
Ikke noget! Der kommer bare en boks op om at der er fejl i koden!
Slettet bruger
03. december 2005 - 19:27
#24
(Jeg bruger Visual Studio 2005 Express Edition, hvis det har noget som helst at sige...)
03. december 2005 - 19:48
#25
hvad er den præcise fejl besked ?
03. december 2005 - 20:39
#26
2, følgende kode virker perfekt: #include "stdafx.h" #include <iostream> #include <string> #include <stdlib.h> #include <fstream> #include <sys/stat.h> #include <cstdio> #include <io.h> using namespace std; string fnm1; string fnm2; string sti; string fun1; string fun2; int main(){ cout << "Enter root: "; getline(cin,sti); cout << "Enter file: "; cout << endl << sti << "\\>"; getline(cin,fnm1); cout << "Enter file name: "; cout << endl << sti << "\\>"; getline(cin,fnm2); fun1 = sti + "\\" + fnm1; fun2 = sti + "\\" + fnm2; rename(fun1.c_str(),fun2.c_str()); }
03. december 2005 - 22:10
#27
Nu ved jeg ikke lige hvad sti hedder på engelsk i dette tilfælde, men nu har jeg altså bare kaldt det for root. Prøv :) men den duer ikke hvis du benytter ,,\all users\(...) - det SKAL være en bruger du går ind under
Slettet bruger
04. december 2005 - 08:55
#28
Ja... For den kan ikke gemme et mellemrum i en variabel... :( Jeg tror det var det der gik galt... Nå, prøver lige din.
Slettet bruger
04. december 2005 - 09:01
#29
Hvad betyder endl?
Slettet bruger
04. december 2005 - 12:34
#30
Bare glem det...
Slettet bruger
04. december 2005 - 12:34
#31
Kan jeg få dig til at smide et svar, arne_v?
04. december 2005 - 13:21
#32
endl betyder det samme som <p> i PHP, mens "\n" er det samme som "<br>" :)
04. december 2005 - 13:22
#33
og dét der getline(cin, var); gemmer hele indholdet af indtastningen (inklusiv mellemrum: " ")
04. december 2005 - 13:47
#34
og 2, denne kode sletter filen fint: #include "stdafx.h" #include <iostream> #include <string> #include <stdlib.h> #include <fstream> #include <sys/stat.h> #include <cstdio> #include <io.h> using namespace std; string fnm1; string sti; string fun1; int main(){ cout << "Enter root: "; getline(cin,sti); cout << "Enter file: "; cout << endl << sti << "\\>"; getline(cin,fnm1); fun1 = "del \""+sti+"\\"+fnm1+"\""; system(fun1.c_str()); }
04. december 2005 - 13:49
#35
så mangler vi vidst kun at kunne åbne filen, og det gøres sådan hér: #include "stdafx.h" #include <iostream> #include <string> #include <stdlib.h> #include <fstream> #include <sys/stat.h> #include <cstdio> #include <io.h> using namespace std; string fnm1; string sti; string fun1; int main(){ cout << "Enter root: "; getline(cin,sti); cout << "Enter file: "; cout << endl << sti << "\\>"; getline(cin,fnm1); fun1 = "\""+sti+"\\"+fnm1+"\""; system(fun1.c_str()); } Kunne jeg måske få pointsne? Test lige mine scripts af, de duer perfekt :D
04. december 2005 - 14:46
#36
Denne kode holder sq tæt: (laver en fil) #include "stdafx.h" #include <iostream> #include <string> #include <stdlib.h> #include <fstream> #include <sys/stat.h> #include <cstdio> #include <io.h> using namespace std; string sti; string fil_navn; string fuld_sti; string indhold; int main(){ cout << "Enter path:\n"; getline(cin,sti); cout << endl; cout << "Enter file name:\n"; cout << sti << "\\>"; getline(cin,fil_navn); cout << endl; cout << "Enter file contents:"; cout << endl; getline(cin,indhold); fuld_sti = sti + "\\" + fil_navn; cout << endl << endl << endl << "Creating file..."; ofstream extern_fil(fuld_sti.c_str()); extern_fil << indhold; cout << endl << endl << endl << "File created!"; cout << endl << endl << endl; system("pause"); } eksempel 1: <ENTER PATH> C:\Documents and Settings\<BRUGER>\Skrivebord <ENTER FILE NAME> tabel.html <ENTER FILE CONTENTS> <center><table border=2><tr><td width=100 height=100><center>Hey YOU!</center></td></tr></table></center> eksempel 2: <ENTER PATH> c:\windows <ENTER FILE NAME> Fil navn.txt <ENTER FILE CONTENTS> Bla, bla, bla... Her er indholdet af txt-filen! Udover <ENTER PATH> tager den forhold til store eller små bogstaver :)
Slettet bruger
04. december 2005 - 15:13
#37
Hej igen Nicolaj... Kan sku ikke få din "filåbner" til at du... :(
04. december 2005 - 16:47
#38
kan du få de andre til at du?
Slettet bruger
04. december 2005 - 16:49
#39
Yes sir!
04. december 2005 - 16:50
#40
slet må bare være #include <iostream> #include <cstdio> using namespace std; int main() { string fnm; cout << "Indtast filnavn:"; getline(cin,fnm); remove(fnm.c_str()); return 0; }
04. december 2005 - 16:51
#41
hmm.. Jeg kan godt få den til at du... Hvad skriver du i <ENTER PATH> og <ENTER FILE NAME>? (her hedder den godt nok root, men pyt skidt)
04. december 2005 - 16:52
#42
zipper har vist hvordan du åbner en fil men et svar for rename & remove
04. december 2005 - 16:53
#43
nix. Duer ikke (vi bruger begge to VC++)
04. december 2005 - 16:54
#44
Kan du ikke få de andre til at du, 2? Altså dem jeg har lavet? For de duer hos mig, og vi bruger trods alt samme version :)
04. december 2005 - 16:57
#45
Er der detsuden en funktion der gør VC++ opmærksom på, at alle koderne mellem { og } foregår hér: C:\Windows< ?
04. december 2005 - 16:57
#46
hovsa, < skulle ikke have været der
04. december 2005 - 16:59
#47
prøv #include <io.h> og chdir("C:\\windows");
04. december 2005 - 17:00
#48
hvad gør den?
04. december 2005 - 17:01
#49
hov! ups, min fejl
04. december 2005 - 17:02
#50
Men hvad nu hvis jeg så vil skifte sti igen, bliver det så bare til chdir("C:\\(...)"); og så foregår følgende koder dér?
04. december 2005 - 17:06
#51
ja
04. december 2005 - 17:07
#52
Så hvis jeg prøver med ovenstående funktion der opretter en fil, så kommer den (eksempelvis) til at hedde: include "stdafx.h" #include <iostream> #include <string> #include <stdlib.h> #include <fstream> #include <sys/stat.h> #include <cstdio> #include <io.h> using namespace std; string sti; string fil_navn; string fuld_sti; string indhold; int main(){ chdir("C:\\Documents and Settings\\<BRUGER>\\Skrivebord"); cout << "Enter path:\n"; getline(cin,sti); cout << endl; cout << "Enter file name:\n"; cout << sti << "\\>"; getline(cin,fil_navn); cout << endl; cout << "Enter file contents:"; cout << endl; getline(cin,indhold); fuld_sti = sti + "\\" + fil_navn; cout << endl << endl << endl << "Creating file..."; ofstream extern_fil(fuld_sti.c_str()); extern_fil << indhold; cout << endl << endl << endl << "File created!"; cout << endl << endl << endl; system("pause"); } ikke??
04. december 2005 - 17:09
#53
mangler lige en # foran første include
04. december 2005 - 17:10
#54
hvis du angiver fuld sti når du opretter fil behøver du ikke chdir
04. december 2005 - 17:14
#55
Den skriver: Visual C++ 2005 Ekspress Edition There were building errors. Would you like to continue and run the last successful building? Yes No Do not show this dialog again
04. december 2005 - 17:16
#56
Det skriver den hver gang der er fejl... :( Men udkommenterer jeg linien duer det
04. december 2005 - 17:18
#57
2! Kan jeg ikke få at vide, hvad du skriver i <ENTER PATH> og <ENTER FILE NAME>?
04. december 2005 - 17:19
#58
hvilken linie ?
04. december 2005 - 17:19
#59
I mit script der åbner/gerne skulle åbne en fil
04. december 2005 - 17:20
#60
Ehm. Den skriver ikke noget med linier
04. december 2005 - 17:24
#61
"Men udkommenterer jeg linien duer det" hvilken linie ?
04. december 2005 - 17:25
#62
Den linie hvor jeg skrev det dér med chdir
04. december 2005 - 17:31
#63
Og så kunne du tilfældigvis ikke fortælle mig hvordan man kreerer grafiske ellementer udelukkende med vores version af C++? ;p
04. december 2005 - 17:31
#64
prøv evt. at inkludere direct.h fremfor io.h
04. december 2005 - 17:34
#65
Du er jo for sej! Så duer skidtet :D
04. december 2005 - 17:37
#66
Og så liige: Hvordan laver man arrays? Det kan jeg ikke helt finde ud af.... :(
04. december 2005 - 17:45
#67
int a[10]; er et int array med 10 elementer
04. december 2005 - 17:47
#68
og hvad vil et int array sige?
04. december 2005 - 17:49
#69
at du har 10 int som du kan bruge som a[0], ... , a[9]
04. december 2005 - 17:50
#70
men hvad er det der int? main-funktionen hedder jo også int, men hvad er det i sig selv?
04. december 2005 - 17:57
#71
int angiver at det er heltal
04. december 2005 - 18:01
#72
arh. Nice. Men hvor placeres denne funktion? Er det som en string som hér: #include (includes...) string int mit_array[10]; string syv; int main(){ mit_array[10]=["01","02","03","04","05","06","07","08","09","10"]; syv = mit_array[6]; } eller hvad?
04. december 2005 - 18:20
#73
Er det sådan helt ulovligt at svare på dette spørgsmål?
04. december 2005 - 19:34
#74
string int mit_array[10]; duer ikke string mit_array[10]; eller int mit_array[10];
04. december 2005 - 19:38
#75
Men hvad nu hvis jeg vil starte et array med kun et element fra starten af, og jeg hen ad vejen vil tilføje flere værdier. Og så vil jeg også kunne fjerne værdierne igen selvfælgelig :)
04. december 2005 - 19:44
#76
så skal du over i STL vector eller lignende
04. december 2005 - 19:50
#77
okay
04. december 2005 - 19:51
#78
Og så vil jeg i øvrigt også lige smide et svar, for jeg ved dog, at mine C++ scripts virker :)
04. december 2005 - 19:51
#79
det skal iøvrigt være #include <iostream> #include <string> using namespace std; string mit_array[10] = {"01","02","03","04","05","06","07","08","09","10"}; string syv; int main() { syv = mit_array[6]; cout << syv << endl; return 0; }
04. december 2005 - 19:52
#80
men hvad skal den dér return 0; gøre godt for???
04. december 2005 - 19:57
#81
det er status fra program til styre systemet
04. december 2005 - 21:06
#82
og nu ville jeg utroligt gerne vide, hvordan man tester om et directory er tilgængeligt. Kan du stikke mg koden til det?
04. december 2005 - 21:12
#83
og hvilke underfiler og -mapper der er tilgængelige i et bestemt directory
Slettet bruger
05. december 2005 - 16:20
#84
Tja, Nicolaj, det burde være DIG der gav arne_v pointene... Hehe! Nå, pyt, tak for hjælpen!
06. december 2005 - 07:57
#85
hvor er du ond ;P nå pyt, det drejer sig jo kun om 15 point, fik du det forresten til at du?
Slettet bruger
01. april 2006 - 08:22
#86
NÅ! Det er DIG, der er maqhem! Hvorfor f*ck skal du absolut skifte nanv?!
Slettet bruger
01. april 2006 - 08:22
#87
*navn
01. april 2006 - 10:41
#88
zipper-znake er da lamt
Slettet bruger
01. april 2006 - 18:57
#89
JA!!! Fat det! Og det har aldrig været 'zipper' - var der ikke 'cyber', du mente til at starte med?!
Kurser inden for grundlæggende programmering