Seite 1 von 2

Festellen, ob ein String nur Zahlen enthält

Verfasst: 26.12.2004 23:00
von MVXA
Hallo !
Ich hab für ein Programm von mir eine Funktion geschrieben, mit der man überprüfen kann, ob ein String nur Zahlen enthält (#True) oder nicht (#False)

Code: Alles auswählen

Procedure isNumeric(strZahl.s)
    DefType.b bytResult
    DefType.l lngCount
    DefType.s strTmpChar
    
    For lngCount = 1 To Len(strZahl)
        strTmpChar = Mid(strZahl, lngCount, 1)
        If Asc(strTmpChar) => '0' And Asc(strTmpChar) <= '9'
            bytResult = #True
        Else
            bytResult = #False
            Break
        EndIf
    Next
    
    ProcedureReturn bytResult
EndProcedure

Verfasst: 26.12.2004 23:20
von GPI
Ah. wieder mal ein optimierungswettbewerb:

Code: Alles auswählen

Procedure IsNumeric(*String.BYTE)
  Result=#True
  While *String\b
    If *String\b<'0' Or *String\b>'9'
      Result=#False
      Break
    EndIf
    *String+1
  Wend
  ProcedureReturn Result
EndProcedure

Debug IsNumeric(@"1233587923")
Debug IsNumeric(@"234243jk")
a$="654"
Debug IsNumeric(@a$)

Verfasst: 26.12.2004 23:38
von MVXA
ich habs nur gepostet weil ich diese Funktion nirgends gefunden hab, das soll kein optimierungswettbewerb sein :freak:

Verfasst: 26.12.2004 23:58
von Falko
@GPI
Optimieren?
Unter Andere Sprachen ist ein Source von Powerbasic aus dem
englischen Forum, bei dem ich leider passen muß.
Wie wäre es denn damit? Das wäre doch eine Herausforderung zum
Optimierungswettbewerb, oder? :mrgreen:

Gruß Falko

Verfasst: 27.12.2004 00:07
von PMV
Ich hät da nix gegen ... da ich auf Optimierte Codes lauere wie der Wolf auf das Häschen *gg* ... kann ich nur von profetieren, vorallem benutzt ich auch so eine Procedure ... und lernen tut man (Anfänger :wink: ) bei so was auch noch :D

also in dem Sinne *gg* :mrgreen:

MFG PMV <)

Verfasst: 27.12.2004 00:30
von GPI
LittleFurz hat geschrieben:ich habs nur gepostet weil ich diese Funktion nirgends gefunden hab, das soll kein optimierungswettbewerb sein :freak:
War nicht böse gemeint. Aber bei solch kleinen Routinen hat jeder seine vorgehensweise. Ich würde sowas über Pointer lösen (siehe oben).

Verfasst: 27.12.2004 00:39
von MVXA
dann lsöcht das ganze hier halt, ich wollt das nur für anfänger bereitstellen... mir doch egal -_-

Verfasst: 27.12.2004 01:00
von GPI
LittleFurz hat geschrieben:dann lsöcht das ganze hier halt, ich wollt das nur für anfänger bereitstellen... mir doch egal -_-
Toll. ich fühl mich jetzt auch mieß :(

Es führt mehr als nur ein Weg zum Ziel. Wichtig ist erstmal einen weg zu finden.

Verfasst: 27.12.2004 13:56
von redacid
LittleFurz: nein, der Thread wird nicht gelöscht. Ich habe deine Procedur nicht getestet, gehe aber einfach davon aus, dass sie funktioniert. Und nur, weil GPI eine "andere" Version zeigt, ist deine doch noch lange nicht schlechter - nur eben anders gelöst. Es ist doch schön, wenn man für ein und dasselbe Problem gleich mehrere verschiedene Lösungen hat.

Verfasst: 14.04.2006 11:33
von Vallan
Um herauszufinden ob keine Buchstaben da sind (Kürtzer aber schlechter) :

Code: Alles auswählen

string.s = "34"
If UCase(string) = LCase(string)
Debug "Ja"
Else 
Debug "Nein"
EndIf