Autor Beitrag
itsaproblem
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Di 28.10.08 14:41 
Hallo,

und zwar hab ich folgendes Problem, ich schreib grad eine Funktion, die wie folgt definiert ist.
(Also in der Funktion steht natürlich noch mehr, hab es nur zwecks dem Überblick raus gelöscht.)

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
public static double[,] Einlesen(byte[] E, out int Stereo)
{

...
... (hier werden alle Variablen definiert und initialisiert, wie z.B. ChunkNameRIFF, usw.)
...

if ((ChunkNameRIFF == "RIFF") && (RIFFTyp == "WAVE") && ((BitsSample == 16) || (BitsSample == 8)))
{            
                if (BitsSample == 16)
                {
                    if (FormatTyp == 1)
                    {
                        double[,] Sampls = new double[ChunkLängeData / 42];
                    }
                    else 
                    {
                        double[,] Sampls = new double[ChunkLängeData / 22];
                    }
                }
                else
                {
                    if (FormatTyp == 1)
                    {
                        double[,] Sampls = new double[ChunkLängeData / 22];
                    }
                    else
                    {
                        double[,] Sampls = new double[ChunkLängeData, 2];
                    }
                }
            }
            else
            {
                double[,] Sampls = new double[ChunkLängeData / 22];
            }

Stereo= FormatTyp;

return Sampls; (Zeile x)
}

Und ich kann nicht nachvollziehen, wieso immer die folgende Fehlermeldung kommt:

Fehler 1 Der Name "Sampls" ist im aktuellen Kontext nicht vorhanden. Zeile: x

Denn ich definier sie doch in jedem Zweig.

Hoff mir kann jemand sagen, was ich falsch mache.

Danke schon mal und viele Grüß

Moderiert von user profile iconKha: C#-Tags hinzugefügt
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Di 28.10.08 14:48 
definier die Variable einmal vor den bedingungen und weis sie an entsprechenden Stellen einfach nur zu .

(wenn du in einem Zweig eine Variable deklarierst wird diese am Ende des zweiges automatisch entfernt)
itsaproblem Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Di 28.10.08 14:55 
Danke für die schnelle Antwort, aber wenn ich sie davor def. dann muss ich sie ja in denn if-Anweisung raus machen. Doch das wollt ich ja gerade nicht, da die Felder ja unterschiedliche Länge haben, je nach dem welcher Fall eintritt. Sonst hab ich z.B. bei Mono 8 Bit ein Feld, dass fast 4 mal zu groß ist.
Oder hab ich dich falsch verstanden?
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Di 28.10.08 15:01 
Da hast du mich falsch verstanden

am anfang vor den ganzen If-bedingungen deklarierst du die Variable nur
ausblenden C#-Quelltext
1:
double[,] Sampls;					

und Instanzieren bzw zuweisen tust du in den Zweigen
ausblenden C#-Quelltext
1:
Sampls = ...;					
itsaproblem Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Di 28.10.08 15:04 
Ach so.
Hat prima funktioniert. Vielen vielen Dank für die super schnelle Hilfe.
Danke nochmals.