Autor Beitrag
xtribe
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 21.08.07 09:35 
Hallo,

ich möchte aus einer Variablen 'Title' text auslesen, bis ich auf ein '[' oder '(' stoße.

z.Bsp. von

Zitat:

Oral Fixation Vol.2 (New Version)

möchte ich nur bis zur Klammer auslesen.
Zitat:

Oral Fixation Vol.2



Dies wollte ich mit folgendem code lösen - etwas stimmt aber nicht, ich bekomme die Meldung: "Zeilenumbruch innerhalb einer Konstanten".
ausblenden C#-Quelltext
1:
(Title.Substring(0, Title.IndexOfAny(new char[] { '(''[' })).Trim())					


Auch mit diesem code habe ich es probiert und habt auch nicht funktioniert.

ausblenden C#-Quelltext
1:
(Title = Title.Substring(0, Title.IndexOfAny(new char[] {'(''['})))					



Hier auch noch der gesamte String den ich nutze um den inhalt der Variablen auszulsesen und weiterzugegeben (funktioniert).


ausblenden C#-Quelltext
1:
prdtTitle|exact|[TextTranslator.RemoveDiacritics [b](Title)[/b]]|mainPerformer|exact|[TextTranslator.RemoveDiacritics (Artist)]|false					

(Title) muss gegen einen code ersetzt werden, der wie oben schon beschrieben den Title nur bis zu ( oder [ ausliest


Der komplette string hat demnach bei mir so ausgesehen:

ausblenden C#-Quelltext
1:
prdtTitle|exact|[TextTranslator.RemoveDiacritics ((Title.Substring(0, Title.IndexOfAny(new char[] { '(''[' })).Trim()))]|mainPerformer|exact|[TextTranslator.RemoveDiacritics (Artist)]|false					


ausblenden C#-Quelltext
1:
prdtTitle|exact|[TextTranslator.RemoveDiacritics (Title = Title.Substring(0, Title.IndexOfAny(new char[] {'(''['})))]|mainPerformer|exact|[TextTranslator.RemoveDiacritics (Artist)]|false					



Hat jemand einen Vorschlag was bei

ausblenden C#-Quelltext
1:
(Title.Substring(0, Title.IndexOfAny(new char[] { '(''[' })).Trim())					


korrigiert werden muss?


Vielen Dank!
xtribe
xtribe Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 21.08.07 10:43 
ok. ich habs nochmal getestet...

wenn er sofort auf einen string mit [ oder ( stößt funktioniert es perfekt! Alledings bekomme ich die fehlermeldung wenn er auf einen string ohne ( oder [ stößt.
Zitat:
ERROR - Parse text document failed: Die Länge darf nicht kleiner als 0 (null) sein.


wie kann ich das mit einer if funktion in C# lösen?
xtribe Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 21.08.07 12:03 
Methode1 : 'Der typ string kann nicht implizit in int konvertiert werden'
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
int index = Title.Substring(0, Title.IndexOfAny(new char[] {'(''['}));
if( index != -1 )
{
Title.Substring(0, index).Trim();
}



Methode 2: 'Der Typ sring kann nicht imlizig in int konvertiert werden'
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
int index = Title.Substring(0, Title.IndexOfAny(new char[] { '(''[' }));
if(index != -1)
Title = Title.Substring(0, Title.IndexOfAny(new char[] { '(''[' })).Trim();
else
Title = Title;



Hat jemand hierfür eine Lösung?

Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 21.08.07 12:13 
Warum hast du denn gerade dein Posting editiert und den einzig richtigen Ansatz entfernt? Du willst du erkennen, ob IndexOfAny fehlschlägt, also musst du dessen Rückgabewert speichern und diesen auf -1 testen. Zu dem Fehler, den du vorhin noch genannt hattest, müsstest du noch ein wenig mehr Code zeigen. Scheint so, als hättest du den Code in eine Funktion verpackt, dann muss jeder Pfad in einem return enden.
xtribe Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 21.08.07 12:42 
'Nicht alle Codepfade geben einen Wert zurück'.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
int index = Title.IndexOfAny(new char[] { '(''[' });
if( index != -1 )
{
Title.Substring(0, index).Trim();
}


das ist in einer c# anwendung in einer funktion.

Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Di 21.08.07 13:54 
user profile iconKhabarakh hat folgendes geschrieben:
Warum hast du denn gerade dein Posting editiert und den einzig richtigen Ansatz entfernt? Du willst du erkennen, ob IndexOfAny fehlschlägt, also musst du dessen Rückgabewert speichern und diesen auf -1 testen. Zu dem Fehler, den du vorhin noch genannt hattest, müsstest du noch ein wenig mehr Code zeigen. Scheint so, als hättest du den Code in eine Funktion verpackt, dann muss jeder Pfad in einem return enden.

@xtribe
Du musst also - wenn wir den Fehler finden sollen - die gesamte Methode zeigen.

Und bitte richte Dich nach dem Vorschlag von Christian: unter "Bereiche" nicht "allg.Code", sondern C# anklicken, wenn Du mit C#-Code kommst.

Jürgen
xtribe Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 21.08.07 14:23 
Hi alle!

Erstens mal Dank für eure bisherige Hilfe! Diesmal habe ich unter Breiche C# Code ausgewählt.

Ich kann euch die Methode leider schicken, da ich diesen Code in einer "On Change" funktion in einer veröfentlichten Appliktion einfüge die mit C# geschrieben wurde.

Das ganze funktioniert so:

Ich lese werte aus einem Text File, der Tittel wird durch eine variable mit der text parsing lenguage ausgelesen und wird an ein gleichnamiges Feld an eine Tabelle übergeben.

Sobald sich die Variable Title "on change" verändert/gefüllt wird, soll folgender code aktiviert werden, der dem Feld/Variablen "Song" in der selben Tabelle den string von Title bis zu ( oder [ ü übergibt.

Der Code läuft nun nachdem ich return; genutzt habe ohne probleme aber das Feld Song bleibt leer.

nur als Info - wenn ich "on-change" unter Title Song = Title; Return Song; eingebe, wird das Feld Song mit dem Inhalt von Title gefüllt.


es soll so funktionieren:

wenn index von title = -1 dann Song = Title.Substring(0, index).Trim();
wenn index von title nicht -1 dann Song = Title

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
int index = Title.IndexOfAny(new char[] { '(''[' });
return index;
if( index != -1 )
{
Song = Title.Substring(0, index).Trim();
return Song;
}


Könnt ihr erkennen was da noch falsch ist?

Vielen Dank,
xtribe
xtribe Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 21.08.07 14:48 
So ich habe den selben code in die funktion "Calculated Value" des Feldes/Variablen Song geschmissen.

Nun wird Song gefüllt. Aber mit dem Index also z.Bsp. mit -1, oder 17 oder 11.. anstatt mit dem ausgelesen title!


Hilfe!!
xtribe Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 21.08.07 15:35 
ok. der index nehme ich an kommt aus return index;

ich kann den code aber nciht ohne return index; schreiben. Was kann ich machen damit mir der tatsächliche string.substring angezeigt wird?
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Di 21.08.07 15:37 
user profile iconxtribe hat folgendes geschrieben:
Ich kann euch die Methode leider schicken, da ich diesen Code in einer "On Change" funktion in einer veröfentlichten Appliktion einfüge die mit C# geschrieben wurde.

Wenn Du die Methode hast, kannst Du sie doch kopieren...,
user profile iconxtribe hat folgendes geschrieben:
So ich habe den selben code in die funktion "Calculated Value" des Feldes/Variablen Song geschmissen.

Nun wird Song gefüllt. Aber mit dem Index also z.Bsp. mit -1, oder 17 oder 11.. anstatt mit dem ausgelesen title!

Du schreibst:
ausblenden C#-Quelltext
1:
return index;					

An dieser Stelle wird die Methode sofort beendet und der Wert von index zurückgegeben. OK, das hast Du jetzt selbst erkannt.

Es bleibt dabei: Eine vollständige Antwort kann nur gegeben werden, wenn vollständige Informationen gegeben werden. Jürgen
xtribe Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 21.08.07 16:01 
wie gesagt... der quellcode steht mir leider nicht zur Verfügung.


konnte es aber lösen.

Danke an euch alle!
ausblenden C#-Quelltext
1:
2:
3:
4:
int index = Title.IndexOfAny(new char[] { '(''[' });
if( index != -1 ) Song = Title.Substring(0, index).Trim();
else Song = Title;
return Song;