Autor Thema: InStrRev  (Gelesen 4572 mal)

Offline 0xse

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 507
  • Geschlecht: Männlich
InStrRev
« am: 10.08.05 - 16:18:48 »
verzweifelt gesucht, nun selbst geschrieben

start -> von hinten, ab 1, anzahl der zeichen
s -> der string in dem gesucht wird
m -> der string nach dem gesucht wird

bei fehlern wird pauschal eine 0 zurückgegeben. einen compare type gibt es nicht. kein parameter ist optional.

viel spass damit :)


Function instrrev(start As Long,s As String, m As String) As Long
   Dim pos As Long, lpos As Long, posmax As Long
   If len(s) = 0 Or Len(s) - Len(m) - start < 0 Or start < 1 Then Goto ende
   posmax = Len(s) - start + 1
   Do
      lpos = pos
      pos = Instr(pos + 1, s, m, 0)
      If pos = 0 Or (pos > posmax And lpos <= posmax) Then Goto ende
   Loop
ende:   
   instrrev = lpos
End Function
« Letzte Änderung: 11.08.05 - 09:08:29 von 0xse »

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: InStrRev
« Antwort #1 am: 10.08.05 - 16:30:52 »
Stimmt das fehlt nur habe ich bis jetzt nie eien Grund gefunden warum ich nicht StrRightBack benutzen kann
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline 0xse

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 507
  • Geschlecht: Männlich
Re: InStrRev
« Antwort #2 am: 10.08.05 - 16:47:51 »
lass mir doch meine kreative langeweile :)

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: InStrRev
« Antwort #3 am: 10.08.05 - 17:00:31 »
Datentyp Long ist nun wahrlich "auf Nummer sicher", wenn es um Strings in LS geht. Dafür gibt es kein ErrorHandling ... Und wenn da jemand "start = -80" hineinkippt ?
"Sprechende Variablenbezeichner" - Fehlanzeige.
Default-Werte - Fehlanzeige.
Standardkonformität - Fehlanzeige (LS meint mit der Position immer da betreffende Zeichen, also 1 für das erste Zeichen)
Was macht "lpos" da ? So schwer lesbar der Code auch ist, aber darauf kann man doch verzichten ...
...

viel spass damit :)

Haben wir gehabt.

Bernhard

PS: Nimm es mir nicht übel, aber sowas erscheint normalerweile unter "worst practices fpr coding".

Offline 0xse

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 507
  • Geschlecht: Männlich
Re: InStrRev
« Antwort #4 am: 11.08.05 - 08:33:20 »
Solche Trivialfunktionen selber schreiben zu müssen ist "worst practise". Aber sie war nunmal nicht da.

Aber selbst mit den Variablennamen, ist so ein kurzer Quellcode doch wohl zu verstehen...

Und Thomas Schulte... StrRightBack macht was ganz anderes als InStrRev...


> Datentyp Long ist nun wahrlich "auf Nummer sicher", wenn es um Strings in LS geht.
Die können immerhin beliebig groß sein. Und an den paar Byte soll es dann nicht scheitern.

> Dafür gibt es kein ErrorHandling ... Und wenn da jemand "start = -80" hineinkippt ?
"Sprechende Variablenbezeichner" - Fehlanzeige.
Wenn du mal guckst, bei Fehlern gibts immer eine 0 zurück. Und wenn du dir mal die InStr Funktion anschaust, die gibt bei Fehlern auch immer eine 0 zurück. (Unter bestimmten Umständen auch NULL oder Error.)


> Default-Werte - Fehlanzeige.
Das ist LS... das initialisiert Variablen von alleine. Strings sind leer, Zahlen sind 0.

> Standardkonformität - Fehlanzeige (LS meint mit der Position immer da betreffende Zeichen, also 1 für das erste Zeichen)
Ich zähle von hinten. Und jetzt sag nicht das du dich an jeden existierenden Standard hällst...

> Was macht "lpos" da ? So schwer lesbar der Code auch ist, aber darauf kann man doch verzichten ...
lpos: last position
pos: position
posmax: maximal position
start: begin, counted from right
s: search string
m: match string

sprechen meine variablen so wenig? ich finde nicht.


edit:
der text sollte nicht so böse sein wie er klingt :)
« Letzte Änderung: 12.08.05 - 10:48:14 von 0xse »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz