Hejsan!
Skulle behöva veta hur man gör en grej i c#. Hur gör man när man måste sätta "" runt en string?
Såhär ser "koden" ut:
axVLCPlugin21.playlist.add(ofd)
Måste alltså få dit "" runt ofd, men hur gör man det så att det funkar?
30 svar · 2 605 visningar · startad av Gildebrand
Hejsan!
Skulle behöva veta hur man gör en grej i c#. Hur gör man när man måste sätta "" runt en string?
Såhär ser "koden" ut:
axVLCPlugin21.playlist.add(ofd)
Måste alltså få dit "" runt ofd, men hur gör man det så att det funkar?
Uhm, man sätter citationstecken runt strängen? :o
axVLCPlugin21.playlist.add("ofd")
Känns som att det saknas lite information i ditt inlägg...
För att se om jag förstår dig rätt:
ofd är en variabel som innehåller säg: Test
Du vill att .playlist ska bli addad med "Test" och inte bara Test?
I så fall:
axVLCPlugin21.playlist.add(String.Formt("\"{0}\"", ofd));
Vad exakt menar du? Behöver du ha två apostofer på varje sida, så att strängen blir ""innehållet""?
Isåfall blir det väl typ som enklast:
string var = "\"\"" + ofd + "\"\"";
axVLCPlugin21.playlist.add(var);
/red. Eller som Redel skrev, med String.Format().
@nders, nej för då refererar man ju inte till strängen, utan då blir det bara text.
Jag måste ha apostofer runt strängen för att det ska funka.
det är tänkt så att man kan skriva såhär:
axVLCPlugin21.playlist.add("c:/godis.wmv");
Men jag vill byta ut c:/godis.wmv mot min sträng.
Det objekt(string) som innehåller c:\goid.wmv sätter du in som en parameter i din lista:
string filePath;
filePath = "c:\godis.wmv";
axVLCPlugin21.playlist.add(filePath);
Skulle behöva veta hur man gör en grej i c#. Hur gör man när man måste sätta "" runt en string?
Varför skulle du behöva det? Kör add en eval liknande metod?
utan "" runt stringen:
System.Windows.Forms.AxHost.InvalidActiveXStateException was unhandled
Message=Exception of type 'System.Windows.Forms.AxHost+InvalidActiveXStateException' was thrown.
Source=AxInterop.AXVLC
StackTrace:
at AxAXVLC.AxVLCPlugin2.get_playlist()
at WindowsFormsApplication11.Form1..ctor() in Z:\VS2010Projects\GPIO\WindowsFormsApplication11\WindowsFormsApplication11\Form1.cs:line 21
at WindowsFormsApplication11.Program.Main() in Z:\VS2010Projects\GPIO\WindowsFormsApplication11\WindowsFormsApplication11\Program.cs:line 17
at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
Är sökvägen du skickar in giltig?
c:/godis.wmv är normalt inte vad man ska ange eftersom Windows normalt använder backslash.
c:\godis.wmv kan bör du inte ang heller eftersom backslash är ett escapetecken. Troligen måste du då ange c:\\godis.wmv. Särskilt illa är det om \ följs av t ex n, r eller t då får utt tecken som inte alls hör hemma i en sökväg. (\n och \r radbrytningstecken, \t=tabbtecken)
@nders, nej för då refererar man ju inte till strängen, utan då blir det bara text.
En text är en sträng är en text.
Frågan var otydlig, och som man frågar får man svar. :)
Men så här då.
Råkade skriva att strängen hette ofd, fast den heter egentligen filename. Spelar egentligen ingen roll.
string filename = ofd.FileName;
Hur gör jag om jag vill lägga till en apostrof på vardera sida om ofd.FileName? Måste lära mig alla sånna här grejjer :
\ betyder alltså att man säger åt koden att hoppa över tecknet efter?
det borde nog funka med det @anders :)
Men nu har jag ett litet annat problem.
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
string filename = "\"" + ofd.FileName + "\"";
}
Så ser koden ut.
Men den gillar inte när jag lägger
axVLCPlugin21.playlist.add("c:/wildlife.wmv");
inom if-satsen, efter string filename.
Blir inget fel vid bygget, men när jag kör får jag följande
Exception of type 'System.Windows.Forms.AxHost+InvalidActiveXStateException' was thrown.
Men den gillar inte när jag lägger
axVLCPlugin21.playlist.add("c:/wildlife.wmv");inom if-satsen, efter string filename.
Blir inget fel vid bygget, men när jag kör får jag följande
Exception of type 'System.Windows.Forms.AxHost+InvalidActiveXStateException' was thrown.
"C:/wildlife.wmv" är inte en giltig sökväg. Borde vara "C:\wildlife.wmv". Och funkar inte det så prova "C:\\wildlife.wmv".
Har provat det men gör ingen skillnad. Funkar som sagt om jag inte har koden i if-satsen.
Det jag kan tänka är att du måste skriva:
...add("\"C:\\wildlife.wmv\"");
eftersom att du annars inte får med "" runt strängen som skickas till funktionen.
Inget verkar dessvärre funka :(
Är inte akut att få det att fungera, så jag tror jag får undersöka och fundera lite mer.
Men jag har en fråga till. Jag använder alltså VLC ActiveX control i mitt WinForms projekt, och nu vill jag hämta tillgängliga subtitles.
Om jag vill bestämma att jag ska visa undertext nummer 1, så skriver jag bara axVLCPlugin21.video.subtitle=1;
Men man ska kunna hämta subtitles också, alltså vilka språk som är tillgängliga, och vilket nummer de har. Jag skulle vilja göra det och skicka in i en listbox. Jag har provat några olika saker, men lyckas inte.
vlc.video.subtitle: (supported in vlc version > 0.8.6a) get and set the subtitle track to show on the video screen.
The property takes an integer as input value [1..65535]. If subtitle track is set to 0, the subtitles will be disabled.
If set to a value outside the current subtitle tracks range, then it will return -1 and display an error message.
Prova att ange filnamnet som file://c:/wildlife.wmv eller file://c/wildlife.wmv
Hjälpte inte!
Det här är så jäkla konstigt. Tror inte problemet ligger i själva kodsnutten i sig.
axVLCPlugin21.playlist.add("c:\\wildlife.wmv");
funkar utmärkt under button1_click, men inte under public form1();
Detta driva mig galen x(
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
axVLCPlugin21.playlist.add(ofd.FileName);
}
Fungerar inte, menar du? Hur har du skapa instansen för 'axVLCPlugin21'? Vad ger ofd.FileName tillbaka/vad innehåller ofd.FileName?
Nu har jag lagt det under en button istället, och då funkar det som det ska. Vet egentligen inte varför jag ville att det skulle köras med formuläret.
Men någon som har en idé om min andra fråga?