Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Anfangsbuchstaben eines Strings in Großbuchstaben umwandeln (https://www.delphipraxis.net/123810-anfangsbuchstaben-eines-strings-grossbuchstaben-umwandeln.html)

juLiii 9. Nov 2008 10:39


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

Meflin 9. Nov 2008 10:43

Re: Anfangsbuchstaben eines Strings in Großbuchstaben umwand
 
Delphi-Quellcode:
wort[1] := UpperCase(wort[1])
:stupid:

juLiii 9. Nov 2008 10:46

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??

Meflin 9. Nov 2008 10:50

Re: Anfangsbuchstaben eines Strings in Großbuchstaben umwand
 
Zitat:

Zitat von juLiii
[Pascal Fehler] Hangman.pas(959): E2010 Inkompatible Typen: 'Char' und 'string'
muss ich dann die Variable "Wort" als char und nicht als string verwenden??

Nein, Char ist ja nur ein Zeichen, string eine Zeichenkette. Dann probier mal ob das geht:

Delphi-Quellcode:
var
  FirstChar: string;
  wort: string;
begin
  FirstChar := wort[1];
  Result := UpperCase(FirstChar);
(Gibt aber so nur den Anfangsbuchstaben zurück, musst du dann wieder in Wort einsetzen ;) )

Bzw. Vielleicht tuts auch kürzer
Delphi-Quellcode:
wort[1] := UpperCase(string(wort[1]))
:gruebel:

pilic 9. Nov 2008 10:50

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);

juLiii 9. Nov 2008 10:59

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??

SirThornberry 9. Nov 2008 11:00

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:
YourString[1] := AnsiUpperCase(YourString[1])[1];
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)

juLiii 9. Nov 2008 11:04

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

mkinzler 9. Nov 2008 11:08

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;

Jürgen Thomas 9. Nov 2008 11:24

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:54 Uhr.
Seite 1 von 2  1 2      

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