![]() |
Fehler bei Dateinamen
Hi,
ich erstelle in Delphi einen Stream (Wavestream) und beim Abspeichern meckert er immer mit dem Dateinamen rum: Zitat:
MFG Larsi |
Re: Fehler bei Dateinamen
Es kommt im Pfad ein Leerzeichen vor. An dieser stelle geht er davon aus das der Pfad da zuende ist. Er geht also davon aus das deine Datei Chris heißt und mit den Parametern " Brown - Run It! (Main Version).wav"
Aufgerufen wird. "Chris" ist aber kein zulässiger Dateiname da keine Endung... gruß Teekeks Edit: Natürlich nicht "Lehrzeichen" ^^ |
Re: Fehler bei Dateinamen
Dein Freund nennt sich
Delphi-Quellcode:
meineDateiEndung := '.lov';
meinStringMitAnführungszeichen := QuotedStr('Ein String mit Leerstellen' + meineDateiEndung); |
Re: Fehler bei Dateinamen
also ich kann mir eigentlich nicht vorstellen, warum EFCreateError einen String mit " benötigt? :gruebel:
(wäre jedenfalls eigenartig, wenn dem so sei) Bist du sicher, daß beim "zusammenbauen" des Strings kein Fehler unterläuft? (ungültige Zeichen im String) |
Re: Fehler bei Dateinamen
Liegt das am Umbruch der DP oder ist vor der Datei-Endung wirklich ein #13#10?
|
Re: Fehler bei Dateinamen
hab ich mit auch schon überlegt, aber ich glaub wegen der Leerzeichen kurz davor, daß daran mal nicht die DP Schuld ist :angel:
|
Re: Fehler bei Dateinamen
Zitat:
![]() |
Re: Fehler bei Dateinamen
Hab das jetzt mit QutoedString gemacht doch es kommt immernoch gleicher Fehler.
|
Re: Fehler bei Dateinamen
Ist da ein Umbruch drin oder ist das nur ein Darstellungsfehler in der DP?
|
Re: Fehler bei Dateinamen
Wie sieht denn der Quelltext dafür konkret aus und was genau steht ggf. in den einzelnen Variablen drin?
|
Re: Fehler bei Dateinamen
Also egal wie der Dateiname heißt es wird immer ein Umbruch in der Fehlermeldung vor dem .wav gemacht. Woran liegt das?
Zitat:
Delphi-Quellcode:
'C:\Users\Lars\Desktop\' + k + '.wav'
Zitat:
MFG Larsi |
Re: Fehler bei Dateinamen
Die Funktion heisst Gänsefüßchen (oben).
Wenn Du Deinen Dateinamen inklusive Pfad damit umschließt...dann geht das. Beispiel:
Delphi-Quellcode:
FileNameString:='"c:\ein Ordner mit Leerzeichen\eine Datei mit Leerzeichen.txt"'
;) Sherlock |
Re: Fehler bei Dateinamen
Wie sieht es denn so aus?
Delphi-Quellcode:
Format('"C:\Users\Lars\Desktop\%s.wav"',[trim(k)])
|
Re: Fehler bei Dateinamen
@DeddyH: Dann kommt der Fehler:
--------------------------- Benachrichtigung über Debugger-Exception --------------------------- Im Projekt Project10.exe ist eine Exception der Klasse EFCreateError mit der Meldung 'Datei "C:\Users\Lars\Desktop\Elefante\"C:\Users\Lars\Des ktop\Shaggy Featuring Rayvon - Angel.wav"" kann nicht erstellt werden. Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch' aufgetreten. --------------------------- Anhalten Fortsetzen Hilfe --------------------------- |
Re: Fehler bei Dateinamen
Steht der ganze Pfad schon in k, oder wie muss ich das verstehen?
|
Re: Fehler bei Dateinamen
Nein! In k steht nur der richtige Dateiename ohne Pfad. Hab mir k per ShowMessage ausgeben lassen.
|
Re: Fehler bei Dateinamen
Dann müsste mein Beispiel aber funktionieren. Zeig mal etwas Code, der Fehler muss woanders liegen.
|
Re: Fehler bei Dateinamen
Also es geht mir bei dem ganzen Filename Dingens ja darum, dass wenn man in meinem StreamZ eine Aufnahme startet (über BassdllPlayer), dass die Aufnahme dann heißt wie das aktuelle Lied. Über eine Funktion liefert BassdllPlayer den Titel und Interpreten der Online Streams. Diesen zeige ich direkt in einem Statusbarpanel an. Über die Funktion StartRecording verusche ich den Dateinamen zu übergeben, doch das klappt bei den Titeln ja irgendwie nicht. Viel mehr Code als die Zeile die ich gepostet habe steckt da nicht hinter. Hier mal die Funktion StartRecording von Bassdllplayer:
Delphi-Quellcode:
procedure TBassdllPlayer.StartRecording(Input: integer; FileName: string);
var i: Integer; begin //F ile Stream WaveStream := TFileStream.Create(FileName, fmCreate); if WaveStream.Size > 0 then begin // free old recording BASS_StreamFree(Channel); end; // generate header for WAV file WaveHdr.riff := 'RIFF'; WaveHdr.len := 36; WaveHdr.cWavFmt := 'WAVEfmt '; WaveHdr.dwHdrLen := 16; WaveHdr.wFormat := 1; WaveHdr.wNumChannels := 2; WaveHdr.dwSampleRate := 44100; WaveHdr.wBlockAlign := 4; WaveHdr.dwBytesPerSec := 176400; WaveHdr.wBitsPerSample := 16; WaveHdr.cData := 'data'; WaveHdr.dwDataLen := 0; WaveStream.Write(WaveHdr, SizeOf(WAVHDR)); i := 0; while BASS_RecordSetInput(i, BASS_INPUT_OFF) do begin i := i + 1; end; BASS_RecordSetInput(input, BASS_INPUT_ON); // start recording @ 44100hz 16-bit stereo recordchannel := BASS_RecordStart(44100, 2, 0, @RecordingCallback, 0); if recordchannel = 0 then begin ShowMyMessage('Die aufnahme kann nicht gestarted werden.', TRUE); WaveStream.Free; end; isRecording := True; end; |
Re: Fehler bei Dateinamen
Tja, dann würde ich Filename einmal analysieren, da scheint ein Zeilenumbruch drinzustehen.
|
Re: Fehler bei Dateinamen
Wie analysiere ich den denn? :|
|
Re: Fehler bei Dateinamen
Breakpoint setzen und die Variable anzeigen lassen wäre eine Möglichkeit.
|
Re: Fehler bei Dateinamen
Und an welcher Stelle, in der Unit oder ein meiner Anwendung?
|
Re: Fehler bei Dateinamen
Habs hingekriegt. Mit Trimright(k); Danke für eueren Hinweis mit dem Zeilenumbruch. :dp:
|
Re: Fehler bei Dateinamen
Das sag ich doch die ganze Zeit :roll:
|
Re: Fehler bei Dateinamen
hi,
hast du noch nie Beakpoints verwendet? Du klickst einfach an der entsprechenden Stelle im Sourcecode links neben die Zeile. Da kommt dann ein roter Punkt und die zeile wird ebenfalls rot dargestellt. Wenn du nun das Programm mit F9 startest, springt das automatisch in den Source an die entsprechende Stelle zurück, sobald das Programm an der Stelle angelangt ist. Wenn du nun mit der Maus über die einzelnen Variablen gehst, gibt dir Delphi die aktuellen Werte der Variablen aus. Alternative mit Strg+F7 und dort die Variable eintragen die du auswerten möchtest Gruß Ansgar |
Re: Fehler bei Dateinamen
Echt :lol:
|
Re: Fehler bei Dateinamen
Du lachst über deine eigene Unwissenheit? Traurig... :roll:
|
Re: Fehler bei Dateinamen
Ich weiß wie man einen Breakpoint erstellt. Ich habe nur gedacht, dass Luckie das mit dem Analysieren anders meint, da ich ja weiß wo dem Filename was zugewiesen wird und wo er erstellt wird.
|
Re: Fehler bei Dateinamen
In Beitrag 5 schrieb ich das mit dem Zeilenumbruch, hättest Du gleich mal danach geguckt, aber ich werde anscheinend gekonnt ignoriert... :roll:
|
Re: Fehler bei Dateinamen
[OT] Hat hier jemand was gepostet? :twisted: :mrgreen: [/OT]
|
Re: Fehler bei Dateinamen
Nö, siehst Du was? :stupid:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz