Richtig übersetzt?

Impi2k

Mitglied
Ich habe eben versucht ein paar C#.Net zeilen in VB.NET zu übersetzen. Ich glaube allerdings, dass ich einen Fehler gemacht habe:

C#
Code:
m_nLineStart = nCurrentSelectionStart;
while ((m_nLineStart > 0) && (Text[m_nLineStart - 1] != '\n'))
           m_nLineStart--;         
           m_nLineEnd = nCurrentSelectionStart;
while ((m_nLineEnd < Text.Length) && (Text[m_nLineEnd] != '\n'))
           m_nLineEnd++;

VB
Code:
_nLineStart = nCurrentSelectionStart
While (_nLineStart > 0) And (Text(_nLineStart - 1) <> Chr(13))
           _nLineStart -= 1
End While
           _nLineEnd = nCurrentSelectionStart
While (_nLineEnd < Text.Length) And (Text(_nLineEnd) <> Chr(13))
           _nLineEnd += 1
End While

Ich sehe keinen Fehler, hoffe das ihr mir helfen könnt!

Impi
 
Zuletzt bearbeitet:
Keine Ahnung wie VB.NET mit der Klammernsetzung umgeht. Ansich sollte es egal sein, aber zieh über die gesamten Bedingungen deiner While-Schleifen mal ein ().
 
Hat nichts geändert. Ich werde wohl weiter in C#.NET schreiben müssen :).
Ist ungünstig da ich dann andauernt den Hick-Hack habe, kann man nichts machen!

Impi
 
Probier mal
Code:
ChrW(13)

In vb sind die Klammer nicht unbedingt notwendig.

Code:
_nLineStart = nCurrentSelectionStart
While _nLineStart > 0 AndAlso Text(_nLineStart - 1) <> ChrW(13)
           _nLineStart -= 1
End While
           _nLineEnd = nCurrentSelectionStart
While _nLineEnd < Text.Length Andalso Text(_nLineEnd) <> ChrW(13)
           _nLineEnd += 1
End While
AndAlso sagt nur aus, das wenn die erste Abbruchsbedingung nicht erfüllt sein sollte, erst dann die zweite Bedingung abgefragt wird. Wird die Abbruchsbedingung schon bei der ersten erfüllt, so wird der rest ab "AndAlso" nicht mehr abgefragt. Mit "And" werden beide Bedingungen geprüft.
Vielleicht kannst ja in einpaar Stichwörtern sagen was
Text(_nLineEnd)
Text(_nLineStart - 1)
Text.Length
sein soll. Dann kann man dann besser erklären. Willst du Zeilenweise etwas überprüfen oder...?
 
Ausserdem gibt es in VB.Net Konstanten

vbCr - carriage return
vbLf - line feed
vbCrLf - carriage return + line feed
vbTab - Tabulator
vbNullChar - das Null Character (Stringende Markierung), wichtig bei der Verwendung von API Funktionen mit String Buffers
 
Zuletzt bearbeitet:
Erstmal Danke für die Antworten!

Ich schreibe gerade ein Control zum für einen Editor. Das Control stellt die RTB des Editors da und ist deswegen auch eine Kinderklasse der normalen RTB.


Wie schon richtig erkannt wurde versuche ich die aktuelle Zeile die geparst werden muss herraus zu filtern.
Falls es nötig ist, kann ich die Methode ja mal posten.

Impi

Edit:
Die Lösung war:

_nLineStart = nCurrentSelectionStart
While _nLineStart > 0 AndAlso Text(_nLineStart - 1) <> ChrW(13)
_nLineStart -= 1
End While
_nLineEnd = nCurrentSelectionStart
While _nLineEnd < Text.Length Andalso Text(_nLineEnd) <> ChrW(13)
_nLineEnd += 1
End While

1000 Dank!
 
Zuletzt bearbeitet:
Schau dir mal diese Seite an: CodeTranslator. Die übersetzt dir alles automatisch!
Für deinen obigen Code kommt das hier raus:
Code:
m_nLineStart = nCurrentSelectionStart

While ((m_nLineStart > 0) AndAlso (Text((m_nLineStart - 1)) <> vbLf))
    m_nLineStart = (m_nLineStart - 1)    
End While
m_nLineEnd = nCurrentSelectionStart

While ((m_nLineEnd < Text.Length) AndAlso (Text(m_nLineEnd) <> vbLf))
    m_nLineEnd = (m_nLineEnd + 1)    
End While
 
Zurück