Forum: PC-Programmierung BASIC: String suche


von Christoph (Gast)


Lesenswert?

Hallo,

ich möchte in Basic eine Zeichenkette durchsuchen und habe dafür den 
befehl Str_SubStr mit dieser funktion wird eine  Char Array durchsucht.
und anschließend wird falls der gesuchte wert gefunden wird die Positon 
ausgegeben nur ich weiß nicht wohin, so wird der Befel in der Hilfer 
erklärt:
Und ich möchte gerne wissen wo die antwort hin kommt wenn der Text 
gefunden wird!


Sub Str_SubStr(ByRef source As Char,ByRef search As Char) As Integer





Beschreibung



Ein String search wird im String source gesucht. Wird die gesuchte 
Zeichenkette gefunden, so wird ihre Position zurückgegeben.



Parameter



source   String der durchsucht wird

search   Zeichenkette die gesucht wird



Rückgabewert



Position des Suchstrings in der untersuchten Zeichenkette

-1   sonst

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Die Frage hast Du Dir schon selbst beantwortet:


   Rückgabewert

   Position des Suchstrings in der untersuchten Zeichenkette



Bist Du Dir sicher, daß die Datentypen korrekt sind?

  Sub Str_SubStr(ByRef source As Char,ByRef search As Char) As Integer

beschreibt eine Funktion, der zwei einzelne Zeichen ("Char") übergeben 
werden und die eine Ganzzahl ("Integer") zurückgibt.

Da sind keine Arrays oder Strings im Spiel.





von Christoph (Gast)


Lesenswert?

Das hab ich so aus der Hilfe heraus kopiert!

das source und search ist jeweils ein Char Array!

Ich versteh nicht ganz wie ich mir die Frage selber beantwortet haben?

Ich möchte aus einer langen Zeichenkette (source) durchsuchen und eine 
schaun ob eine bestimmte Zeichenkette vorhanden ist(search) nur wie weiß 
ich dann wenn der Befehl ausgeführt wurde ob die Zeichenkette (sehrch) 
in (source) vorhanden ist??

Ich möchte das dann irgendwie mit eine IF abfrage machen damit ich eine 
Aktion ausführen kann wenn die Zeichekette search in source vorhanden 
ist!

mfg
Christoph

von Karl heinz B. (kbucheg)


Lesenswert?

Da muss noch irgendwas in der Hilfe stehen:

<Zitat>
Ein String search wird im String source gesucht. Wird die gesuchte
Zeichenkette gefunden, so wird ihre Position zurückgegeben.
</Zitat>

Es wird immer irgendwas zurückgegeben. Wenn der String
gefunden wird, dann wird seine Position zurückgegeben.
Wird er nicht gefunden, dann wird normalerweise ein
Fehlercode zurückgegeben. Der ist meist 0 oder -1.
Wenn du also in der Hilfe nichts darüber findest, dann
probier es doch einfach aus:
Nimm einen bekannten String und lass einen Suchstring darin
suchen. Jetzt schaust du einfach den Returnwert an wenn
der Suchstring enthalten ist und wenn er nicht enthalten
ist. Mit diesem in 2 Minuten durchführbaren Test solltest
du eigentlich raus kriegen, wie das funktioniert.


von Christoph (Gast)


Lesenswert?

Danke!

es hat funktioniert!!

eine frage hab ich noch das source will ich von der seriellen 
Schnittstelle emfpangen ich hab da einen Befehl wo ich Bytweise etwas 
von der seriellen Schnittstelle empfangen habe aber wie übergib ich das 
Byte an ein Array??
Weil ich möchte ja eine ganze Zeichenkette in ein Array schreiben

das ist der Befehl

Sub Serial_ReadExt(serport As Byte) As Word





Beschreibung



Ein byte wird von der seriellen Schnittstelle gelesen. Im Gegensatz zu 
Serial_Read(), kehrt die Funktion auch dann sofort zurück, wenn kein 
Zeichen in der seriellen Schnittstelle ist. In diesem Fall wird der Wert 
256 (0x100) zurückgegeben.



Parameter



serport   Schnittstellennummer (0 = 1.serielle, 1 = 2.serielle etc..)



Rückgabewert



empfangenes byte aus der seriellen Schnittstelle




mfg
Christoph

von Karl heinz B. (kbucheg)


Lesenswert?

Christoph wrote:
>
> eine frage hab ich noch das source will ich von der seriellen
> Schnittstelle emfpangen ich hab da einen Befehl wo ich Bytweise etwas
> von der seriellen Schnittstelle empfangen habe aber wie übergib ich das
> Byte an ein Array??

Die Frage zieht einen weiten Kreis.
Die Frage ist nämlich, woher weist du eigentlich, dass dein
String jetzt  zu Ende ist? Mit anderen Worten: Wenn du
ein Zeichen empfängst, gehört das noch zum String oder
nicht oder fängt vielleicht schon der nächste String an.

Du musst dir also mit dir selbst ausmachen, wie du Strings
beendest. Gebräuchlich ist zb. die Verwendung von 'Return'
(also der Enter-Taste) zur Kennzeichnung des Strings. Man
spricht in diesem Fall dann vom zeilenweisen Einlesen, da
der String dann eine komplette 'Eingabezeile' enthält. Wobei
'Zeile' relativ willkürlich definiert ist: von einem Return
bis zum nächsten.

Wenn du also ein Byte empfängst:
  dann testest du das Byte zuallererst mal darauf ob das ein
  'Return' ist. Wenn nein, dann handelt es sich um ein Byte
  das noch zum String gehört und du hängst es an den String
  an. Basic hat normalerweise schöne Funktionen dafür. Meist
  heissen die Append oder so, manchmal kann man einfach mit +
  ein Zeichen an den String anhängen.

  War das Zeichen aber ein 'Return', dann ist der String soweit
  fertig und kann ausgewertet werden.

>
> Ein byte wird von der seriellen Schnittstelle gelesen. Im Gegensatz zu
> Serial_Read(), kehrt die Funktion auch dann sofort zurück, wenn kein
> Zeichen in der seriellen Schnittstelle ist. In diesem Fall wird der Wert
> 256 (0x100) zurückgegeben.

Aha. Das heist du hast noch einen Sonderfall. Diese Read Funktion
wartet nicht, sondern teilt dir mit, dass nichts vorliegt. Also
ein if mehr.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.