Entwickler-Ecke

Andere .NET-Sprachen - WideChar Menge


Leo1971 - Di 20.06.06 08:28
Titel: WideChar Menge
Hi,

ich bin dabei in verschiedenen Texten Worte zu separieren, Worte bestehen ja aus Buchstaben ;). Das ganze soll multilingual werden. Nun zu meiner Frage: Kennt jemand eine Möglichkeit auch WideChar (Char unter Net) auch in Mengen zu benutzen, so dass man dann auch die Form der Abfrage folgend nutzen könnte:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
Const INVALID_WORD_SEP_SLA = [#65 .. #90,   // Großbuchstaben von A bis Z sind keine Worttrenner
                              #97 .. #122,  // Kleinbuchstaben von a bis z sind keine Worttrenner
                              #256 .. #383// Zeichen 256 bis 383 sind keine Wortrenner
                              #48 .. #57,   // Zahlen sind keine Wortrenner
                              #64,          // @ ist kein Worttrenner
                              #45
                              ];
function F_SearchNextBoundary() : Integer;
var strMySlaw : String
begin
    strMySlaw := 'się na dużą'
    result := 1;
    while strMySlaw(iPos) in INVALID_WORD_SEP_SLA do
    begin
        inc(result);
    end;  
end;


Die oben dargestellte "soll" also die Position des ersten Leerzeichens liefern. Macht sie aber nicht da eine Menge (set of Char) als AnsiChar (ASCII) und nicht als WideChar (UNICODE) interpretiert wird. Der oben dargestellte Allgorithmus würde von links gesehen die Position des Zeichens 'ę' als Grenze ermitteln. Der Blick in die entsprechende UNICODE-Tabelle liefert für das 'ę' folgenden Hex-Wert: H0119. Da das ganze in Mengen auf Ansi zurückgeführt wird nur H19, lt. Ansi Zeichen 25, logischerweise auch ein Worttrenner.

Schlussfolgerung: Wie kann ich WideChar in Mengen nutzen??

Moderiert von user profile iconGausi: Code- durch Delphi-Tags ersetzt


XChris - Di 20.06.06 11:26

Mir erschliest sich nicht ganz, was Du überhaupt tun möchtest.

Wäre es nicht einfacher, die Chars in ein String zu stopfen (StringBuilder bei grossen Mengen nutzen!) und dann mit einer RegEx den kram zu untersuchen?

Was ist eigentlich die Aufgabe der Übung?

Chris


Leo1971 - Di 20.06.06 12:08

Hi,

Sinn der Übung ist es die entsprechenden Wortgrenzen zu ermitteln. Die Funktion dazu sieht etwas anders aus. Die Idee mit dem String ist mir auch schon durch den Kopf gegangen, heißt aber ne ganze Menge umcoden, deshalb die Frage nach den Mengen.

Grüße
Leo


Delete - Mi 21.06.06 21:44

HI

Ich glaube mit System.String (anstatt mit string) als var typ hast du einen String im Unicode, allerdings solltest du´s ausprobieren (bin mir im moment nicht ganz sicher!!!)

hoffe konnte helfen

mfg


Bernhard Geyer - Mi 21.06.06 21:47

Unter D6 geht mehr schlecht als recht da Mengen maximal 255 Elemente beinhalten können. Und wenn man bestimmte Compiler/Linker-schalter für's Debuggen setzt verschluckt sich der Linker an einr solchen Menge.