Ich muss ein Programm schreiben, das Strings verschiedener Länge durchsucht und nur diejenigen auswählt, die mit Symbolen aus dem von mir definierten Satz geschrieben sind (insbesondere japanische Buchstaben). Strings enthalten Wörter in verschiedenen Sprachen (Deutsch, Französisch, Arabisch, Russisch, Englisch usw.). Offensichtlich gibt es eine große Anzahl von möglichen Zeichen. Ich weiß nicht, welche Struktur dafür zu verwenden ist? Ich verwende gerade Delphi 7. Kann jemand vorschlagen, wie man solches Programm schreibt?Mit Unicode-Zeichenfolgen in Delphi 7 arbeiten
Antwort
Offensichtlich wären Sie mit Delphi 2010 besser dran, da die VCL in Delphi 7 keine Unicode-Strings kennt. Sie können WideString-Typen und WideChar-Typen in Delphi 7 verwenden und Sie können einen Komponentensatz wie die TNT-Unicode-Komponenten installieren, um Ihnen beim Erstellen einer Benutzeroberfläche zu helfen, die Ihre Ergebnisse anzeigen kann.
Verwenden Sie für einen sehr großen Typ ein Bit-Array wie TBits. Ein Bit-Array der Länge 65536 würde ausreichen, um jeden UTF-16-Codepunkt zu enthalten. Prüfen, ob Char X in Y definieren, wäre im Grunde:
function WideCharsInSet(wcstr:WideString; wcset:TBits):Boolean;
var
n:Integer;
wc:WideChar;
begin
result := false;
for n := 1 to Length(wcstr) do begin
wc := wcstr[n];
if wcset[Ord(wc)] then
result := true;
end;
end;
procedure Demo;
var
wcset1:TBits;
s:WideString;
begin
wcset1 := TBits.Create;
try
// 1157 - Hangul Korean codepoint I found with Char Map
wcset1[1157] := true;
// go get a string value s:
s := WideChar(1157);
// return true if at least one element in set wcset is found in string s:
if WideCharsInSet(s,wcset1) then begin
Application.MessageBox('Found it','found it',MB_OK);
end;
finally
wcset1.Free;
end;
end;
ich nach Delphi 2010 wechseln auch empfehlen (warum mit 2009 Mühe mehr?)!
Wenn im unwahrscheinlichen Fall, dass Sie mit Delphi 7 stecken bleiben, kann die Unicode Library von Mike Lischke etwas hilfreich sein.
Link ist jetzt kaputt – CyprUS
@CyprUS, behoben! –
Für die einfache Verarbeitung von Zeichenfolgen in der Art und Weise, die Sie beschreiben, lassen Sie sich nicht von Vorschlägen abschrecken, dass Sie auf den neuesten Compiler und das Unicode-aktivierte Framework aktualisieren sollten. Die Unicode-Unterstützung selbst wird natürlich durch die zugrunde liegende Windows-API bereitgestellt, die natürlich (direkt) von "Nicht-Unicode" -Versionen von Delphi ebenso wie von "Unicode-Versionen" zugänglich ist.
Ich vermute, dass die meisten, wenn nicht alle Unicode-Unterstützung, die Sie für die in Ihrer Frage beschriebenen Zwecke benötigen, von der Unicode-Unterstützung in the JEDI JCL erhalten werden können.
Für jede visuelle Komponente Unterstützung benötigen Sie möglicherweise die TNT control set hat den Reiz, frei zu sein.
+1, hervorragendes Argument. Der Code in der akzeptierten Antwort kompiliert und funktioniert auch in Delphi 4 einwandfrei. – mghie
Jetzt ist sogar Delphi in die Traddies und die aktuellen Leute aufgeteilt. –
Ich ziehe es vor, es als "die Arbeit mit einem Minimum an Aufwand, Mühe und Kosten zu erledigen" Menschen und "für Veränderungen Willen zu ändern, ohne darüber nachzudenken, was tatsächlich benötigt wird" Menschen. :) – Deltics
- 1. Delphi 7 bildet, Anker nicht in Vista arbeiten
- 2. Arbeiten mit WordPress aus Delphi
- 3. Speicherverlust mit WMI in Delphi 7
- 4. Parameter in SQL - Delphi 7
- 5. Delphi 7, Strings Probleme
- 6. Wie TStringGrid von Delphi 7 Delphi XE
- 7. Delphi 7 Write
- 8. Delphi 7 - Decode Base64 mit TIdDecoderMIME
- 9. Delphi 7, TTable, Csv-Dateifelder
- 10. Arbeiten WorkAreas auf ListViews in Delphi?
- 11. Warnung "Delphi-spezifisch" in Delphi 6 unter Windows 7
- 12. Indy 10 für Delphi 7
- 13. Windows 7 Stil Benachrichtigungen Flyouts in Delphi
- 14. auf String-Konvertierung in Delphi 7
- 15. Umbraco 7 Arbeiten mit Sprachen/Wörterbuch
- 16. jQuery mit Netscape 7 und 8 arbeiten
- 17. xCode 7, UI-Testing: Arbeiten mit UITableView
- 18. Delphi 7 kompiliert langsam langsamer?
- 19. Xcode 7/Git - Arbeiten mit Arbeitsbereichen
- 20. Delphi Windows 7 Bedienfeld Komponente
- 21. Einen TPageControl flach machen in Delphi 7
- 22. Erste Zuordnungsadresse eines Objekts in Delphi 7
- 23. Standardeigenschaft für Klasse in Delphi 7
- 24. Ich möchte mit Wifi mit Delphi arbeiten. Wie?
- 25. Httphandler nicht in IIS 7 arbeiten
- 26. Delphi 7 Excel Ole-Objekttext Schriftfarbe
- 27. Delphi 7 verwendet altes veraltetes Formular
- 28. Delphi 7 Application und Microsoft Security Essentials
- 29. Delphi 7: Bild an Maus anhängen
- 30. Windows-Dienst: Arbeiten zu bestimmten Zeiten (Delphi)
+1 alle guten Bits in der Antwort. bigsets, TNT und empfehlen, dies in D7 überhaupt nicht zu tun. –
Ich habe hier einen nützlichen Code für Sie geschrieben, Tofig –
Eine großartige Funktion in Delphi 2010 TStringList-Klasse ist die Möglichkeit, eine Datei von der Festplatte zu laden, automatisch UTF8 oder UTF16-Codierung von den Byte-Markierungen zu bestimmen, und so weiter. Das ist ein weiterer Teil Ihrer Aufgabe, Tofig, der in der Version von Delphi, die älter als 2009/2010 ist, schwieriger werden wird. –