FirstChar = Grossbuchstabe
- Blackskyliner
- Beiträge: 532
- Registriert: 28.07.2005 00:54
- Wohnort: /home/Blackskyliner/
FirstChar = Grossbuchstabe
wie kann ich es machen, dass der erste buchstabe eines wortes mit nem grossem zeichen beginnt?? also sowat in der art UCFirst(satz.s)
Keine meiner Antworten ist endgültig, es kann passieren, dass ich den so eben geposteten Beitrag noch mehrmals ändere, um Doppelposts zu umgehen.
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
- Blackskyliner
- Beiträge: 532
- Registriert: 28.07.2005 00:54
- Wohnort: /home/Blackskyliner/
hab was gefunde hat sich erledigt sorry!
Code: Alles auswählen
Procedure.s ucfirst (string.s) ; Erster Buchstabe gross darstellen.
For x=1 To Len(string.s)
If Mid(string.s,x,1)<>Chr(32)
BrkPos.l=x
Break
EndIf
Next x
ersterteil.s=UCase(Mid(String.s,1,BrkPos.l))
zweiterteil.s=Mid(String.s,BrkPos.l+1,len(string.s)-BrkPos.l)
ProcedureReturn ersterteil.s+zweiterteil.s
EndProcedure
Keine meiner Antworten ist endgültig, es kann passieren, dass ich den so eben geposteten Beitrag noch mehrmals ändere, um Doppelposts zu umgehen.
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
- crossroads
- Beiträge: 244
- Registriert: 29.08.2004 05:41
- Wohnort: Rhine Main Area
Etwas kürzer:
Code: Alles auswählen
Procedure.s ucfirst(String$)
ersterteil.s = LTrim(String$)
ProcedureReturn Space(Len(String$) - Len(ersterteil)) + UCase(Left(ersterteil, 1)) + Right(ersterteil, Len(ersterteil) - 1)
EndProcedure
Debug ucfirst(" hallo!")
Man soll die Tür aufmachen, bevor man durchgeht ...
- Froggerprogger
- Badmin
- Beiträge: 855
- Registriert: 08.09.2004 20:02
Hier noch eine Version, die wahrscheinlich etwas schneller ist:
Code: Alles auswählen
Procedure.s UCaseFirst(str.s)
Protected result.s
result = str
PokeB(@result, Asc(UCase(PeekS(@result, 1))))
ProcedureReturn result
Endprocedure
!UD2
- Blackskyliner
- Beiträge: 532
- Registriert: 28.07.2005 00:54
- Wohnort: /home/Blackskyliner/
Danke!
Keine meiner Antworten ist endgültig, es kann passieren, dass ich den so eben geposteten Beitrag noch mehrmals ändere, um Doppelposts zu umgehen.
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
Und noch ein paar Millisekunden beschleunigt 
Es läuft übrigens ~10 mal so schnell, wenn du es aus der Prozedur rausnimmst:
[EDIT: Keine Ahnung was UCase() genau macht, aber für "normale" Strings mit Buchstaben kannst du auch einfach 32 abziehen. Ist nochmal etwas schneller.
]

Es läuft übrigens ~10 mal so schnell, wenn du es aus der Prozedur rausnimmst:
Code: Alles auswählen
string.s = "hallo welt"
Procedure.s UCaseFirst(str.s)
Protected result.s
result = str
PokeB(@result, Asc(UCase(PeekS(@result, 1))))
ProcedureReturn result
EndProcedure
Procedure.s ucfirst(String$)
ersterteil.s = LTrim(String$)
ProcedureReturn Space(Len(String$) - Len(ersterteil)) + UCase(Left(ersterteil, 1)) + Right(ersterteil, Len(ersterteil) - 1)
EndProcedure
Debug "Bitte warten..."
start = ElapsedMilliseconds()
For i = 1 To 10000000
str.s = ucfirst(string)
Next
Debug "crossroads - Procedure: " + Str(ElapsedMilliseconds() - start) + " ms"
start = ElapsedMilliseconds()
For i = 1 To 10000000
ersterteil.s = LTrim(string)
str.s = Space(Len(string) - Len(ersterteil)) + UCase(Left(ersterteil, 1)) + Right(ersterteil, Len(ersterteil) - 1)
Next
Debug "crossroads - direkt: " + Str(ElapsedMilliseconds() - start) + " ms"
start = ElapsedMilliseconds()
For i = 1 To 10000000
s.s = UCaseFirst(string)
Next
Debug "Froggerprogger - Procedure: " + Str(ElapsedMilliseconds() - start) + " ms"
start = ElapsedMilliseconds()
For i = 1 To 10000000
s.s = UCase(Chr(PeekB(string))) + Right(string,Len(string)-1)
Next
Debug "Rob - direkt: " + Str(ElapsedMilliseconds() - start) + " ms"
start = ElapsedMilliseconds()
For i = 1 To 10000000
PokeB(@string, Asc(UCase(PeekS(@string, 1))))
Next
Debug "Froggerprogger - direkt: " + Str(ElapsedMilliseconds() - start) + " ms"
strong.s = "hallo welt"
start = ElapsedMilliseconds()
For i = 1 To 10000000
PokeB(strong, UCase(Chr(PeekB(strong))))
Next
Debug "Rob 2 - direkt: " + Str(ElapsedMilliseconds() - start) + " ms"
strung.s = "hallo welt"
start = ElapsedMilliseconds()
For i = 1 To 10000000
PokeB(strung, PeekB(strung)-32)
Next
Debug "Rob 3 - direkt: " + Str(ElapsedMilliseconds() - start) + " ms"
Code: Alles auswählen
PokeB(string, PeekB(string)-32)
Zuletzt geändert von Rob am 01.11.2005 21:03, insgesamt 1-mal geändert.
Build a man a fire and he's warm for a day. Set a man on fire and he's warm for the rest of his life
- Blackskyliner
- Beiträge: 532
- Registriert: 28.07.2005 00:54
- Wohnort: /home/Blackskyliner/
Dankeschön!! Des hebt die Performance erheblich 

Keine meiner Antworten ist endgültig, es kann passieren, dass ich den so eben geposteten Beitrag noch mehrmals ändere, um Doppelposts zu umgehen.
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
- Blackskyliner
- Beiträge: 532
- Registriert: 28.07.2005 00:54
- Wohnort: /home/Blackskyliner/
PokeB(strung, PeekB(strung)+32)
gibt mir aber nur ne Adresse zurück...
EDIT:
ahh ok isst die buffer address
Gibt bei mir bei nem Debug von nem PeekS() des PokeB´s ein falsches zeichen aus...
gibt mir aber nur ne Adresse zurück...
EDIT:
ahh ok isst die buffer address
Code: Alles auswählen
start = ElapsedMilliseconds()
For i = 1 To 10000000
PokeB(strung, PeekB(strung)+32)
Next
Debug "Rob 3 - direkt: " + Str(ElapsedMilliseconds() - start) + " ms"
Keine meiner Antworten ist endgültig, es kann passieren, dass ich den so eben geposteten Beitrag noch mehrmals ändere, um Doppelposts zu umgehen.
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
Ich Trottel :>
Musst natürlich 32 abziehen, nicht addieren (Siehe ASCII-Tabelle)
So gehts:
Musst natürlich 32 abziehen, nicht addieren (Siehe ASCII-Tabelle)
So gehts:
Code: Alles auswählen
string.s = "hallo welt"
PokeB(string, PeekB(string)-32)
Debug string
Build a man a fire and he's warm for a day. Set a man on fire and he's warm for the rest of his life
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Was soll denn das mit diesen "strong" und "strung"?
Hab übrigens neue Ergebnisse:Aber auf was man auch noch achten sollte: Was ist, wenn der erste Buchstabe schon großgeschrieben ist?
Hab übrigens neue Ergebnisse:
Programm hat geschrieben:crossroads - Procedure: 13920 ms
crossroads - direkt: 10354 ms
Froggerprogger - Procedure: 11707 ms
Rob - direkt: 4947 ms
Froggerprogger - direkt: 511 ms
Rob 2 - direkt: 431 ms
Rob 3 - direkt: 120 ms
Code: Alles auswählen
string.s = "hallo welt"
#MaxD = 10000000
Procedure.s UCaseFirst(str.s)
Protected Result.s
Result = str
PokeB(@Result, Asc(UCase(PeekS(@Result, 1))))
ProcedureReturn Result
EndProcedure
Procedure.s ucfirst(String$)
ersterteil.s = LTrim(String$)
ProcedureReturn Space(Len(String$) - Len(ersterteil)) + UCase(Left(ersterteil, 1)) + Right(ersterteil, Len(ersterteil) - 1)
EndProcedure
start = ElapsedMilliseconds()
For i = 1 To #MaxD
str.s = ucfirst(string)
Next
text.s = "crossroads - Procedure: " + Str(ElapsedMilliseconds() - start) + " ms" + #CRLF$
start = ElapsedMilliseconds()
For i = 1 To #MaxD
ersterteil.s = LTrim(string)
str.s = Space(Len(string) - Len(ersterteil)) + UCase(Left(ersterteil, 1)) + Right(ersterteil, Len(ersterteil) - 1)
Next
text + "crossroads - direkt: " + Str(ElapsedMilliseconds() - start) + " ms" + #CRLF$
start = ElapsedMilliseconds()
For i = 1 To #MaxD
s.s = UCaseFirst(string)
Next
text + "Froggerprogger - Procedure: " + Str(ElapsedMilliseconds() - start) + " ms" + #CRLF$
start = ElapsedMilliseconds()
For i = 1 To #MaxD
s.s = UCase(Chr(PeekB(string))) + Right(string,Len(string)-1)
Next
text + "Rob - direkt: " + Str(ElapsedMilliseconds() - start) + " ms" + #CRLF$
start = ElapsedMilliseconds()
For i = 1 To #MaxD
PokeB(@string, Asc(UCase(PeekS(@string, 1))))
Next
text + "Froggerprogger - direkt: " + Str(ElapsedMilliseconds() - start) + " ms" + #CRLF$
string.s = "hallo welt"
start = ElapsedMilliseconds()
For i = 1 To #MaxD
PokeB(string, UCase(Chr(PeekB(string))))
Next
text + "Rob 2 - direkt: " + Str(ElapsedMilliseconds() - start) + " ms" + #CRLF$
string.s = "hallo welt"
start = ElapsedMilliseconds()
For i = 1 To #MaxD
PokeB(string, PeekB(string)-32)
Next
text + "Rob 3 - direkt: " + Str(ElapsedMilliseconds() - start) + " ms" + #CRLF$
MessageRequester("Ergebnisse", text)
SetClipboardText(text)