Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Die funktion Exec und Ihre Tücken

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
brundie



Anmeldungsdatum: 09.08.2005
Beiträge: 13

BeitragVerfasst am: 17.03.2006, 13:43    Titel: Die funktion Exec und Ihre Tücken Antworten mit Zitat

Ich habe da folgendes geschrieben und das geht nicht:

const C = "xcopy.exe " 'xcopy.exe doku.asc c:\temp2
const Arg = "doku.asc c:\temp2"
newDir = "C:\Gesetze\Verkauf\"
aktDir = curdir$
print "Ich kopiere Datei(en)"
shell "cls"
shell "C:"
chdir newdir
print C + " " + Arg
result = EXEC( C, Arg)

so, wie man im Kommentar in der Zeile 1 sieht, soll es nachher Aussehen damit Windows XP den Xcopy ausführt. tut es aber nicht den die Var result gibt -1 zurück also ein Fehler in der Ausführung.

Habt Ihr eine Meinung dazu? Verzeichnisse und Dateinamen existieren und sind richtig geschrieben.
Die fb Version ist 0.15b

Mit freundlichen Grüßen brundie
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 17.03.2006, 15:01    Titel: Antworten mit Zitat

Kann's sein dass es unter XP kein XCopy mehr gibt?
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 17.03.2006, 15:05    Titel: Antworten mit Zitat

Der Exec-Befehl führt das angegebene Programm nur aus, wenn es im aktuellen
Verzeichnis ist, sonst muß der komplette Pfad angegeben werden..
Code:
Option Explicit
'Das ist immer eine gute Maßnahme ;-))
Const Y = "C:\Windows\system32\xcopy.exe" 'xcopy.exe doku.asc c:\temp2
const C = "xcopy.exe" 'xcopy.exe doku.asc c:\temp2
const Arg = "doku.asc c:\temp2"
Dim As String newDir, aktDir
Dim result
newDir = "C:\Gesetze\Verkauf\"
aktDir = curdir$
Cls 'Warum denn Shell "Cls", FB's Cls tut's doch auch..
print "Ich kopiere Datei(en)" 'Jetzt stimmt diese Meldung :rofl:
shell "C:"
chdir newdir$
print C &" " &Arg
?"Shell"
Shell C &" " &Arg
?"Exec"
result=Exec(Y, Arg)
?result
Sleep
So klappt's dann wahrscheinlich auch bei dir..
@jojo:
Warum sollte es unter XP KEIN XCopy mehr geben?
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 17.03.2006, 15:20    Titel: Antworten mit Zitat

ich denk, die haben die meisten Dos-Befehle,die EXTERN sind (also xcopy) rausgemacht.... und ach ja: ich würd ne api-funktion verwenden, um das verzeichnis rauszufinden oder XCopy mitliefern... weil bei win98 z.B. is die datei in %windowsverzeichnis%\Command und nicht in %windowsverzeichnis%\system32 zwinkern
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 17.03.2006, 15:48    Titel: Antworten mit Zitat

naja man muss halt schaun, EXEC funktioniert eben nicht mit sachen, die die PATH-Variable beinhalten, sprich externe Dos-Befehle etc und AFAIK funktioniert sie auch nicht mit internen Befehlen wie Copy sondern wirklich NUR mit .exe, .com oder .bat (auführbaren dateien eben) die im aktuellen bzw angegebenen Verzeichnis liegen. Andere sachen werden glaub ich nicht ausgeführt
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
brundie



Anmeldungsdatum: 09.08.2005
Beiträge: 13

BeitragVerfasst am: 18.03.2006, 00:44    Titel: Die funktion Exec und Ihre Tücken 2 Antworten mit Zitat

Erstmal danke an alle die geantwortet haben. Ich werde mich gleich noch hinsetzen und das ausprobieren was ytwinky geschrieben hat. Wenn ich das jetzt richt verstanden habe muss ich immer den ganzen Pfad zu den auszuführenden Programmen mit angeben. Was ist aber mit so einem Programm wie copy das hat keinen Pfad weil es scheinbar immer noch Bestandteil von cmd.exe oder command.com ist geht das garnicht? Ferner wenn ich mich recht entsinne wird im Bsp. zum EXEC ein Dir Befehl benutzt ohne Angabe von C:\Windows\System32\... Ich werde jetzt mein Programm troztdem beenden können.

Nochmals Danke und bis demnächst

brundie
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 18.03.2006, 03:54    Titel: Antworten mit Zitat

ja genau, dir oder copy sind interne befehle die sich mit EXEC nicht aufrufen lassen, da musst du dann SHELL benutzen. (freebasic.de => referenz => s => shell)
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 18.03.2006, 18:50    Titel: Antworten mit Zitat

Direktlink:

www.freebasic.de/r.php?s=SHELL

have a nice day
Ciao
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
brundie



Anmeldungsdatum: 09.08.2005
Beiträge: 13

BeitragVerfasst am: 19.03.2006, 13:10    Titel: Antwort an Dusky_Joe Antworten mit Zitat

Hallo danke für Deine Antwort, aber das hatte ich auch schon gelesen. Ich finde die Bsp. leider meistens nicht sehr hilfreich da sie nur die einfachste Form beinhalten. SHELL "DIR C:\*.*" hilft nicht wirklich wenn Shell "Dir " + Pfad$ nicht funktioniert. Aber trotzdem nochmal DANKE

brundie
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 19.03.2006, 13:27    Titel: Antworten mit Zitat

verwundert
Geht doch?
Code:
Pfad$="c:\freebasic\"
shell "dir "+Pfad$
sleep
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
brundie



Anmeldungsdatum: 09.08.2005
Beiträge: 13

BeitragVerfasst am: 19.03.2006, 13:32    Titel: und nochmal Antworten mit Zitat

mit dem Kopf durch die Mauer wollen Sorry, sorry Fehler meinerseits man sollte überprüfen was man so schreibt!

Hast ja Recht. Ich weiß nicht wie ich auf die Idee gekommen bin das das nicht funktioniert.

Danke brundie.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
chutullu



Anmeldungsdatum: 18.10.2005
Beiträge: 77

BeitragVerfasst am: 20.03.2006, 12:42    Titel: Antworten mit Zitat

Also ich würde XCOPY als Pipe ausführen :


Code:

const copy = "help xcopy"
dim ln as string
   
OPEN PIPE copy for input as #1
   
print string$( 60, "-" )
   
  do
    line input #1, ln
    print ln
  loop until eof(1)
   
print string$( 60, "-" )
   
close #1

sleep
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz