![]() |
Anfangsbuchstaben eines Strings in Großbuchstaben umwandeln
hallo zusammen! :hi:
Ich programmiere gerade - wie ich gesehen habe auch viele andere - HANGMAN für die Schule. Ich bin damit auch so gut wie fertig - ich habe nur mehr ein kleines Problem: erst lade ich alle Wörter einer Textdatei in ein Memo-Feld danach wird per Zufall eines dieser Wörter in ein Label-Feld geladen um dann mit den Groß- und Kleinbuchstaben kein Problem zu haben verkleinere ich alle mit: wort := lowercase(Wort) Nach dem Vergleichen der Buchstaben, wenn man auf die Buttons mit den Buchstaben von A-Z klickt, soll - wenn man das Wort nicht gelöst hat - das Lösungswort unterbei in einem Label-Feld erscheinen. Dabei möchte ich aber das nochmalige Laden der Datei aus dem Memo-Feld verhindern. Gibt es also eine Funktion bei der man bei einem Wort nur den Anfangsbuchstaben in einen Großbuchstaben umwandelt?? :gruebel: wäre toll wenn ihr mir helfen könntet :-D juLiii |
Re: Anfangsbuchstaben eines Strings in Großbuchstaben umwand
Delphi-Quellcode:
:stupid:
wort[1] := UpperCase(wort[1])
|
Re: Anfangsbuchstaben eines Strings in Großbuchstaben umwand
danke für die schnelle Antwort, aber dabei kommt eine Fehlermeldung:
[Pascal Fehler] Hangman.pas(959): E2010 Inkompatible Typen: 'Char' und 'string' muss ich dann die Variable "Wort" als char und nicht als string verwenden?? |
Re: Anfangsbuchstaben eines Strings in Großbuchstaben umwand
Zitat:
Delphi-Quellcode:
(Gibt aber so nur den Anfangsbuchstaben zurück, musst du dann wieder in Wort einsetzen ;) )
var
FirstChar: string; wort: string; begin FirstChar := wort[1]; Result := UpperCase(FirstChar); Bzw. Vielleicht tuts auch kürzer
Delphi-Quellcode:
:gruebel:
wort[1] := UpperCase(string(wort[1]))
|
Re: Anfangsbuchstaben eines Strings in Großbuchstaben umwand
Ich würde es so machen, da UpperCase scheinbar nur Strings akzeptiert.
Delphi-Quellcode:
if (Ord(wort[1]) >= $61) and (Ord(wort[1]) <= $7a) then
wort[1] := Chr(Ord(wort[1])-$20); |
Re: Anfangsbuchstaben eines Strings in Großbuchstaben umwand
wahnsinn es funktioniert!!!!! :cheer:
könntest du mir dann auch vl bitte erklären was dieser Code bedeutet?? |
Re: Anfangsbuchstaben eines Strings in Großbuchstaben umwand
Das Problem (der Fehlermeldung) ist das UpperCase einen String zurück gibt und diesen kann man nunmal nicht auf einen einzelnen char zuweisen. daher einfach:
Delphi-Quellcode:
Der Obige Code funktioniert übrigens nicht für deutsche Umlauge (der Code mit dem Ord welcher schaut ob das Zeichen im Bereich der kleinen Buchstaben liegt und wenn dem so ist die Differenz zu den Großbuchstaben subtrahiert)
YourString[1] := AnsiUpperCase(YourString[1])[1];
|
Re: Anfangsbuchstaben eines Strings in Großbuchstaben umwand
wow ihr seid toll!! :hello: jetzt bin ich endlich fertig :-D
danke danke danke noch mal für die Hilfe |
Re: Anfangsbuchstaben eines Strings in Großbuchstaben umwand
Einfach selber machen:
Delphi-Quellcode:
procedure Captialize( var str: AnsiString);
var i, j: integer; sl: TStrings; s, s2: AnsiString; c: AnsiChar; begin sl := TStringList.Create; sl.Delimiter := ' '; sl.StrictDelimiter := True; sl.DelimitedText := str; for i := 0 to sl.Count-1 do begin s := Sl[i]; c := s[1]; if c in ['a'..'z'] then begin s2 := c; s := UpperCase( s2) + Copy ( s, 2, Length(s)-1); end; sl[i] := s; end; str := sl.DelimitedText; sl.Free; end; |
Re: Anfangsbuchstaben eines Strings in Großbuchstaben umwand
Haben die Jedis nicht eine passende Funktion? Aus der Rx-Library (die doch in der JVCL aufgegangen ist) hatte ich AnsiProperCase verwendet. Jürgen
|
Re: Anfangsbuchstaben eines Strings in Großbuchstaben umwand
wenn ich das richtig verstanden hab, sollte
Code:
auch gehen!?
upcase(wort[i])
probiers mal aus |
Re: Anfangsbuchstaben eines Strings in Großbuchstaben umwand
Hallo
Du kannst doch auch einfach das Original-Wort in einer zweiten String-Variable speichern. Neun |
Re: Anfangsbuchstaben eines Strings in Großbuchstaben umwand
Upcase berücksichtigt keine Umlaute, wie bereits weiter oben erwähnt. Möglich wäre auch noch so etwas:
Delphi-Quellcode:
Gilt allerdings nur für Deutsch.
if (Length(wort) > 0) and (wort[1] in ['a'..'z','ä','ö','ü']) then
wort[1] := Chr(Ord(wort[1]) - $20); |
Re: Anfangsbuchstaben eines Strings in Großbuchstaben umwand
Und funktioniert leider unter D2009 nicht mehr
|
Re: Anfangsbuchstaben eines Strings in Großbuchstaben umwand
Hallo,
ich hätte da noch einen Vorschlag für das Teilproblem "AnsiUpCase":
Delphi-Quellcode:
Gruß Hawkeye
function AnsiUpCase (ch : Char) : Char;
begin Result := Char({Windows.}CharUpper(PChar(ch))); end; |
Re: Anfangsbuchstaben eines Strings in Großbuchstaben umwand
Zitat:
|
Re: Anfangsbuchstaben eines Strings in Großbuchstaben umwand
Chr liefert allerdings einen Char zurück, welcher nicht kompatibel mit AnsiChar ist.
|
Re: Anfangsbuchstaben eines Strings in Großbuchstaben umwand
Kann ich nicht wissen, ich hab kein D2009.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz