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:

großes problem mit ordnern :-(( ---> c:/ord1/ord/ord us

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



Anmeldungsdatum: 03.02.2007
Beiträge: 53

BeitragVerfasst am: 03.01.2008, 02:45    Titel: großes problem mit ordnern :-(( ---> c:/ord1/ord/ord us Antworten mit Zitat

Hallo,

so langsam blicke ich nicht mehr durch hier in der Ordner Struktur ;-(((

ich habe in Freebasic folgende wavmerge.exe erstellt (setzt zwei wav dateien zusammen durch Aufruf von wavmerge.exe wav1.wav wav2.wav neueswav.wav)

Code:

DIM header AS STRING * 44
DIM AS INTEGER filelen1, filelen2, totallen
DIM AS STRING buffer1, buffer2
DIM AS STRING file1, file2, file3
file1= COMMAND$(1)
file2= COMMAND$(2)
file3= COMMAND$(3)
OPEN file1 FOR BINARY AS #1
OPEN file2 FOR BINARY AS #2
GET #1,1,header
GET #1,41,filelen1
GET #2,41,filelen2
totallen = filelen1 + filelen2 'gesamte neue länge
buffer1 = SPACE(filelen1)
buffer2 = SPACE(filelen2)
GET #1,45,buffer1
GET #2,45,buffer2
CLOSE #2
CLOSE #1
OPEN file3 FOR OUTPUT AS #3 'evtl datei leeren
CLOSE #3
OPEN file3 FOR BINARY AS #3
PUT #3,1,header
PUT #3,41,totallen
PUT #3,45,buffer1
PUT #3,,buffer2
CLOSE #3


Über Visual Basic rufe ich die EXE-Datei dann aus meinem Programm auf.
Das Problem ist nun, das er mir die Fehlermeldung
Procedureaufruf oder Argument unzulässig Fehler Nr.5
ausgibt ?

Ich denke, das Problem muß irgendwie in der ORDNERANGABE LIEGEN
MEIN VBPROGRAMM LIEGT IM ORDNER

D:\VB5 EIGENE PROGRAMME\Recorder V2 - NEU -\


hier sind auch die zwei "Wav-Dateien" enthalten, die ich zusammenfügen möchte also genau heißen diese so

erstes WAV FILE -> D:\VB5 EIGENE PROGRAMME\Recorder V2 - NEU -\DCC1BF17-190E.wav

zweites WAV FILE ->D:\VB5 EIGENE PROGRAMME\Recorder V2 - NEU -\970182F8-D27B.wav


Jetzt setze ich in Visual Basic den Shell Befehl ein und rufe mein FREEBASIC.exe PROGRAMM AUF, WAS DIESE WAVS NUN ZUSAMMENFÜGEN SOLL ...und wie gesagt, obiger Fehler erscheint?

ich ich weiß nicht, woran das jetzt noch liegen könnte?

der genaue Shell Aufruf ist (bitte nicht erschrecken...)


D:\VB5 EIGENE PROGRAMME\Recorder V2 - NEU -\wavmerge.exe D:\VB5 EIGENE PROGRAMME\Recorder V2 - NEU -\5AAC8807-74AE.wav D:\VB5 EIGENE PROGRAMME\Recorder V2 - NEU -\stille.wav D:\VB5 EIGENE PROGRAMME\Recorder V2 - NEU -\EUEWAVDATEI.wav


kann es sein, das die Parameter, die ich an das Freebasic Programm übergebe, mit den ganzen Ordnern nicht zurecht kommt? oder mit den "-"????

Über Antwort sehr ich sehr dankbar und erleichtert...DANKE im Vorfeld+Gruß
Tom
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



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

BeitragVerfasst am: 03.01.2008, 03:08    Titel: Antworten mit Zitat

pfade und dateinamen mit leerzeichen müssen in anführungszeichen gesetzt werden? oder meinst du, die konsole oder freebasic errät, welches leerzeichen jetzt zum pfad/name gehört und welches zwei parameter trennt? zwinkern

wavmerge.exe "D:\VB5 EIGENE PROGRAMME\Recorder V2 - NEU -\5AAC8807-74AE.wav" "D:\VB5 EIGENE PROGRAMME\Recorder V2 - NEU -\stille.wav" "D:\VB5 EIGENE PROGRAMME\Recorder V2 - NEU -\EUEWAVDATEI.wav"

gewöhn dir mal an beim eintippen von dem befehl immer nur die ersten zwei drei zeichen der verzeichnis/dateinamen einzugeben und dann tab zu drücken, dann kommen die "" automatisch dazu sobald n leerzeichen drin ist.
_________________
"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
tom_verbatim



Anmeldungsdatum: 03.02.2007
Beiträge: 53

BeitragVerfasst am: 03.01.2008, 12:33    Titel: geht immer noch nicht ;-( Antworten mit Zitat

Hi,

erstmal danke für die info+tipp mit der tab...

so, jetzt habe ich alles mit anführungszeichen versehen, die fehlermeldung bleibt aber die gleiche ;-(((


Code:
Shell "\wavmerge.exe " & Chr$(34) & "D:\VB5 EIGENE PROGRAMME\Recorder V2 - NEU -\a.wav" & Chr$(34) & " " & _
Chr$(34) & "D:\VB5 EIGENE PROGRAMME\Recorder V2 - NEU -\stille.wav" & Chr$(34) & " " & Chr$(34) & "D:\VB5 EIGENE PROGRAMME\Recorder V2 - NEU -\EUEWAVDATEI.wav" & Chr$(34)


also an die shell wird dann
Code:
D:\VB5 EIGENE PROGRAMME\Recorder V2 - NEU -\wavmerge.exe "D:\VB5 EIGENE PROGRAMME\Recorder V2 - NEU -\a.wav" "D:\VB5 EIGENE PROGRAMME\Recorder V2 - NEU -\stille.wav" "D:\VB5 EIGENE PROGRAMME\Recorder V2 - NEU -\EUEWAVDATEI.wav"


übergeben! und so sollte es doch dann klappen ?
die files sind natürlich vorhanden! läuft aber nicht?

evtl. noch jemand einen rat, wo der fehlerteufel zugeschlagen haben könnte?

gruß+danke im vorfeld
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 03.01.2008, 12:44    Titel: Antworten mit Zitat

Ich würde Leerzeichen im Pfad sowieso nach Möglichkeit vermeiden. Probiere mal, alles in einen Pfad zu legen, der keine Leer- oder Sonderzeichen enthält, vielleicht klappt es ja dann besser.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
tom_verbatim



Anmeldungsdatum: 03.02.2007
Beiträge: 53

BeitragVerfasst am: 03.01.2008, 14:22    Titel: hm?!?! Antworten mit Zitat

Hi,

ja klar, wäre eine möglichkeit, aber das programm nutzen auch andere und ich kann doch nicht im vorfeld sagen, wie deren ordner heißen sollen?!?!

wenn jemand das programm auf e:\programm\was weiß ich\mein wavprogramm z.B. installiert, sollte es doch irgendwie möglich sein, dass das dann klappt...


dennoch danke für deinen rat...

gruß tom
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



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

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

von wem kommt denn der fehler, dein vb-prog oder dein wavmerge? und kannst du den auf eine zeile zurückverfolgen bzw dir sicher sein dass es die shell-zeile ist?

und probier mal den selben befehl ganz normal aus der kommandozeile raus auszuführen, vielleicht siehst du da eher was falsch ist. Wenns da funktioniert haste in deinem vb-prog irgendwas falsch übersetzt.
_________________
"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
tom_verbatim



Anmeldungsdatum: 03.02.2007
Beiträge: 53

BeitragVerfasst am: 04.01.2008, 01:36    Titel: geht nicht Antworten mit Zitat

hi und danke erstmal...

der fehler kommt von vb und die zeile ist eindeutig mit dem shell aufruf der fehlerteufel ? und ich verstehe das echt nicht...

jetzt habe ich die dateien mal auf c:\ gesetzt und alles läuft ?

der aufruf war

Shell "c:\wavmerge.exe " & Chr$(34) & "c:\frage.wav" & Chr$(34) & " " & Chr$(34) & "c:\antwort.wav" & Chr$(34) & " " & Chr$(34) & "c:\neuefrageantwort.wav" & Chr$(34)


Wieso geht das mit den langen ORDNERN nicht???

Freebasic Problem? Visual Basic Problem? Windows Problem?
Anderer Fehler?

für tipps wäre ich immer noch sehr dankbar....

gruß tom
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


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

BeitragVerfasst am: 04.01.2008, 02:09    Titel: Antworten mit Zitat

liegt eher daran, dass VB nicht parameter und exename auseinander halten kann, vermute ich. btw. es geht in VB und FB auch eleganter, man muss nicht CHR(34) benutzen: zwinkern
Code:

SHELL """c:\wavmerge.exe"" ""c:\frage1.wav"" ""c:\antwort.wav"" ""c:\neuefrageantwort.wav"""

_________________
» 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
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 04.01.2008, 02:20    Titel: Antworten mit Zitat

nein .. das hat nichts mit VB zu tun, wie man hier ersehen kann:

Code:

Sub Form_Load()
Msgbox Command
End Sub


Grundsätzlich sollte man auf leerzeichen in URLs (auch Pfadangaben) verzichten. Und, wenn, dann sollten sie URL-encodet sein.

Natürlich ist es auch möglich, das es an lange verzeichnissnamen hängt. Du soöötets grundsätzlich anführungsstriche nutzen, um Pfade einzuklammern, damit sie später richtig genutzt werden, bzw. gefiltert werden können.

Hinzu kommt, das dein Programm die " wieder ausfiltern muss, wenn du die Pfadangaben zum öffnen nutzt. Die anführungsstriche kann man sich ersparen, jedoch macht das die filterung im programm sehr sehr schwer, wenn nicht unmöglich.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


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

BeitragVerfasst am: 04.01.2008, 02:33    Titel: Antworten mit Zitat

Wenn du die Dateinamen vom VB-Programm an das Fb-Programm übergibst, fällt mir hier noc heine variante ein...

http://www.vbarchiv.net/archiv/tipp_details.php?pid=172

Damit die Dateinamen in 8.3-Dateinamen umwandeln. Die können keine Leerzeichen enthalten, stellen aber genau die selbe Datei dar wie "lange" Dateinamen. Wenn du diese 8.3-Dateinamen an das FB-Programm übergibst,gibt es keinen ärger mehr mit Leerzeichen 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
tom_verbatim



Anmeldungsdatum: 03.02.2007
Beiträge: 53

BeitragVerfasst am: 04.01.2008, 11:26    Titel: Danke Antworten mit Zitat

Hi,

vielen Dank für Eure Beiträge...

ich habs jetzt hinbekommen lächeln

Gruß tom
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
tom_verbatim



Anmeldungsdatum: 03.02.2007
Beiträge: 53

BeitragVerfasst am: 04.01.2008, 12:18    Titel: bräuchte doch nochmal hilfe ;-( Antworten mit Zitat

hmm die lösung war doch nicht so das wahre ;-(

weiß zufällig jemand, wie ich unteren code in visual basic 5/6 übersetzen könnte?

habe schon versucht, aber das problem ist irgendwie der get/put befehl und kriege diesen nicht 100% in VB übersetzt ...

weiß jemand, wie man den code in vb5 übersetzten könnte?

dann habe ich keine probleme mehr mit den ordnern zwinkern

Danke im Vorfeld+immernoch ein großen Lob an das Forum hier zwinkern))
gruß tom



Code:
DIM header AS STRING * 44
DIM AS INTEGER filelen1, filelen2, totallen
DIM AS STRING buffer1, buffer2
DIM AS STRING file1, file2, file3
file1="c:\abc.wav
file2="c:\def.wav"
file3="c:\abcdef.wav"

OPEN file1 FOR BINARY AS #1
OPEN file2 FOR BINARY AS #2


GET #1,1,header
GET #1,41,filelen1 :'???????????????????????????
GET #2,41,filelen2
totallen = filelen1 + filelen2 'gesamte neue länge
buffer1 = SPACE(filelen1)
buffer2 = SPACE(filelen2)
GET #1,45,buffer1
GET #2,45,buffer2
CLOSE #2
CLOSE #1

OPEN file3 FOR OUTPUT AS #3 'evtl datei leeren
CLOSE #3
OPEN file3 FOR BINARY AS #3
PUT #3,1,header:'??????????????????????
PUT #3,41,totallen
PUT #3,45,buffer1
PUT #3,,buffer2
CLOSE #3
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


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

BeitragVerfasst am: 04.01.2008, 14:30    Titel: Antworten mit Zitat

der code sollte genau so laufen, indem du
Code:

DIM AS Datentyp Variablenname

in
Code:

DIM Variablenname AS Datentyp

umändert.
sonst fällt mir auf den ersten blick nichts auf, was man noch ändern müsste.

Bezüglich deinen Fragezeichen...
Code:
GET #1,41,filelen1 :'???????????????????????????

eine WAV-Datei wird mit sogenannten RIFF-Headern gespeichert. Da in einer WAV-Datei theoretisch mehrere Header auftreten können und auch noch nach den eigentlichen Wav-Sampeln noch daten stehen könnten (sowas ähnliches wie ID3 bei MP3s), muss die länge der eigentlichen Wav-Samples in dem header angegeben werden. diese länge steht in den Bytes 41-44.

Code:
PUT #3,1,header:'??????????????????????

Der eben genante RIFF-Header steht in den Bytes 1-44 und wurde durch

Code:
DIM header AS STRING * 44
GET #1,1,header

eingelesen. Der Header muss natürlich dann in die neue Datei übertragen werden, aber mit angepasster Länge:
Code:

PUT #3,41,totallen

_________________
» 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
tom_verbatim



Anmeldungsdatum: 03.02.2007
Beiträge: 53

BeitragVerfasst am: 04.01.2008, 14:36    Titel: get ist fehlerhaft Antworten mit Zitat

hi

danke, das mit den strings war mir schon klar , der fehler liegt irgendwie im get befehl von visual basic

vb nimmt diesen nicht an und bricht mit folgender fehlermeldung ab

Laufzeitfehler 458

Variable verwendet einen in Visual Basic nicht unterstützten Typ der Automatisierung


und zeigt mir den get befehl in der vbide an.


falls noch jemand eine idee hat...
gerne

gruß tom
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


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

BeitragVerfasst am: 04.01.2008, 14:42    Titel: Antworten mit Zitat

der code läuft bei mir ohne probleme in VB6...

MSDN hat Folgendes geschrieben:
Sie haben versucht, eine Variable zu verwenden, die in einer Klassenbibliothek oder Objektbibliothek mit einemDatentyp definiert worden ist, der von Visual Basic nicht unterstützt wird.
Sie können in einem Visual Basic-Programm keine Variable verwenden, deren Typ Visual Basic nicht kennt.

irgendwelche verdächtigen variablennamen verwedet?
_________________
» 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
tom_verbatim



Anmeldungsdatum: 03.02.2007
Beiträge: 53

BeitragVerfasst am: 04.01.2008, 15:33    Titel: es läuft ;-) Antworten mit Zitat

hi,

unerwartete hilfe war nah zwinkern ES LÄUFT...

wen es interessiert
Code:

Dim header(43) As Byte
Dim filelen1 As Long, filelen2 As Long, totallen As Long
Dim buffer1() As Byte, buffer2() As Byte

file1 = App.Path & "\a.wav"

file2 = App.Path & "\b.wav"

file3 = App.Path & "\ab.wav"


Open file1 For Binary As #1
Open file2 For Binary As #2

Get #1, , header
Get #1, 41, filelen1
Get #2, 41, filelen2

totallen = filelen1 + filelen2

ReDim buffer1(filelen1 - 1) As Byte
ReDim buffer2(filelen2 - 1) As Byte

Get #1, 45, buffer1
Get #2, 45, buffer2

Close #2
Close #1

If Len(Dir$(file3)) > 0 Then Kill file3
Open file3 For Binary As #3
Put #3, , header
Put #3, 41, totallen
Put #3, 45, buffer1
Put #3, , buffer2
Close #3



Gruß Tom
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 04.01.2008, 18:08    Titel: Antworten mit Zitat

Hi,
mit einer Batch-Datei konnte ich problemlos auf die Dateien und Ordner zugreifen, also mußte es mit FB auch gehen..
Zuerst dachte ich, es wäre ein Problem der Zeilenlänge, das war jedoch nicht richtig:
Code:
Dim As String Dir1="D:\VB5 Eigene Programme"
Dim As String Dir2=Dir1 &"\Recorder V2 - NEU -"
Dim As String File0="\wavmerge.exe"
Dim As String File1="\a.wav"
Dim As String File2="\stille.wav"
Dim As String File3="\euedatei.wav"
Dim As String s=!"\34" &Dir1 &File0 &!"\34"
Print Len(s)
Print s
Shell s
s=!"\34\34" &Dir1 &File0 &!"\34 \34" &Dir2 &File1 &!"\34\34"
Print Len(s)
Print s
Shell s
s=!"\34\34" &Dir1 &File0 &!"\34 \34" &Dir2 &File1 &!"\34 \34" &Dir2 &File2 &!"\34\34"
Print Len(s)
Print s
Shell s
s=!"\34\34" &Dir1 &File0 &!"\34 \34" &Dir2 &File1 &!"\34 \34" &Dir2 &File2 &!"\34 \34" &Dir2 &File3 &!"\34\34"
Print Len(s)
Print s
Shell s
Sleep
End
Die wichtigsten Zeilen für meinen Standard-Debugger(Eye.Exe) hab ich dringelassen: es sind die Print-Anweisungen happy
Eye.Exe funzt übrigens nur zusammen mit Think.Exe, der wiederum nur mit Brain.Exe, aber das ist ja bekannt grinsen
(Falls die Sonderzeichen ein Problem sind: Ich habe sie hier erklärt..)
Zu der VB-Klamotte kann ich nichts sagen, da mir dieses Programm fremd ist zwinkern
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
RatsDevSoftware



Anmeldungsdatum: 22.11.2007
Beiträge: 48

BeitragVerfasst am: 05.01.2008, 15:41    Titel: Antworten mit Zitat

Laufen Think.exe und Brain.exe eigtl. in Wine?
(Boar, schon lange nicht mehr das traute "Antwort schreiben" Feld gesehn' grinsen
_________________
visit our Homepage!
shift ist verschwendung...
...o gott - ich fang schon wieder an zu spammen...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 05.01.2008, 16:56    Titel: Antworten mit Zitat

Wieso wine? Das läuft nativ!
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
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 -> Windows-spezifische Fragen 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