AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi MyGetAverageWordLengthFromFile
Thema durchsuchen
Ansicht
Themen-Optionen

MyGetAverageWordLengthFromFile

Ein Thema von PeterPanino · begonnen am 20. Apr 2016 · letzter Beitrag vom 22. Apr 2016
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#11

AW: MyGetAverageWordLengthFromFile

  Alt 22. Apr 2016, 03:00
Ich kann mich nur wiederholen: Ohne das korrekte Alphabet der Eingabedatei zu kennen, ist es unerheblich, ob man MSDN-Library durchsuchenIsCharAlpha nimmt, oder eigenen Filter verwendet. Am Ende ist es trotzdem nicht perfekt. Warum MSDN-Library durchsuchenIsCharAlpha auch nicht besser ist? Deshalb:

Zitat:
Determines whether a character is an alphabetical character. This determination is based on the semantics of the language selected by the user during setup or through Control Panel.
Viel Spaß auf einem deutschen Windows die Wörter in einer französischen Textdatei zu zählen.

ein String mag > 2GiB sein, aber die Länge (Anzahl Zeichen) liegt innerhalb des Integerbereiches.
Da hast du wohl recht, die Zählervariable habe ich tatsächlich vergessen zu ändern Die Version mit dem FileStream betrifft das allerdings nicht.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.064 Beiträge
 
Delphi XE2 Professional
 
#12

AW: MyGetAverageWordLengthFromFile

  Alt 22. Apr 2016, 17:50
Ich kann mich nur wiederholen: Ohne das korrekte Alphabet der Eingabedatei zu kennen, ist es unerheblich, ob man MSDN-Library durchsuchenIsCharAlpha nimmt, oder eigenen Filter verwendet. Am Ende ist es trotzdem nicht perfekt. Warum MSDN-Library durchsuchenIsCharAlpha auch nicht besser ist? Deshalb:

Zitat:
Determines whether a character is an alphabetical character. This determination is based on the semantics of the language selected by the user during setup or through Control Panel.
Viel Spaß auf einem deutschen Windows die Wörter in einer französischen Textdatei zu zählen.
Bei mir gibt IsCharAlpha auch bei den von dir zitierten französischen Alpha Zeichen recht korrekt True zurück, ebenso bei zum Beipiel giechischen, kyrillischen und auch bei den asiatischen Zeichen.
Somit kann man bei der Verwendung von IsCharAlpha davon ausgehen, dass ein relativ korrektes Ergebnis geliefert wird, auch bei fremdländischen Texten.

Bei deinen Funktionen, die alles als Alpha Zeichen betrachten was kein Steuerzeichen (#0..#31), Blank, Komma, Semikolon, Punkt oder
Doppelpunkt ist kann man dagegen sicher sein, dass mit großer Zuverlässigkeit ein falsches Ergebnis geliefert wird, sogar bei rein deutschen Texten.

Nachstehend eine Tabelle, bei welchen Codeblöcken wieviel Zeichen als Alpha, Numeric oder nicht Alphanumeric erkannt werden.
Ich hätte gern auch die Tabelle für die einzelnen Zeichen geliefert, aber die erstellte PDF ist zu groß (17 MB).

Im Anhang ist ein kleines Programm, das die Tabellen erzeugt und anzeigt.
Mit dem Button "Details" kann man die Tabelle für alle Zeichen ins Clipboard stellen und dann zum Beispiel in eine Word Dokument kopieren (Word braucht dafür allerdings einige Zeit).

Code:
Start Ende Anzahl Alpha  Num Andere Block
----- -----  ------ ----- ----- ------ ----------------------------------------------
$0000 $FFFF  65536 47455   313  17768 Total
----- -----  ------ ----- ----- ------ ----------------------------------------------
$0000 $007F    128    52    10     66 Basic Latin
$0080 $00FF    128    65     3     60 Latin-1 Supplement
$0100 $017F    128   128     0      0 Latin Extended-A
$0180 $024F    208   208     0      0 Latin Extended-B
$0250 $02AF     96    96     0      0 IPA Extensions
$02B0 $02FF     80    24     0     56 Spacing Modifier Letters
$0300 $036F    112     0     0    112 Combining Diacritical Marks
$0370 $03FF    144   127     0     17 Greek and Coptic
$0400 $04FF    256   248     0      8 Cyrillic
$0500 $052F     48    36     0     12 Cyrillic Supplement
$0530 $058F     96    78     0     18 Armenian
$0590 $05FF    112    30     0     82 Hebrew
$0600 $06FF    256   152    20     84 Arabic
$0700 $074F     80    34     0     46 Syriac
$0750 $077F     48    48     0      0 Arabic Supplement
$0780 $07BF     64    39     0     25 Thaana
$07C0 $07FF     64    36    10     18 NKo
$0800 $083F     64     0     0     64 Samaritan
$0840 $085F     32     0     0     32 Mandaic
$08A0 $08FF     96     0     0     96 Arabic Extended-A
$0900 $097F    128    73    10     45 Devanagari
$0980 $09FF    128    53    10     65 Bengali
$0A00 $0A7F    128    51    10     67 Gurmukhi
$0A80 $0AFF    128    52    10     66 Gujarati
$0B00 $0B7F    128    53    10     65 Oriya
$0B80 $0BFF    128    37    10     81 Tamil
$0C00 $0C7F    128    54    10     64 Telugu
$0C80 $0CFF    128    53    10     65 Kannada
$0D00 $0D7F    128    59    10     59 Malayalam
$0D80 $0DFF    128    59     0     69 Sinhala
$0E00 $0E7F    128    73    10     45 Thai
$0E80 $0EFF    128    40    10     78 Lao
$0F00 $0FFF    256    49    10    197 Tibetan
$1000 $109F    160    74    20     66 Myanmar
$10A0 $10FF     96    82     0     14 Georgian
$1100 $11FF    256   240     0     16 Hangul Jamo
$1200 $137F    384   326     0     58 Ethiopic
$1380 $139F     32    16     0     16 Ethiopic Supplement
$13A0 $13FF     96    85     0     11 Cherokee
$1400 $167F    640   628     0     12 Unified Canadian Aboriginal Syllabics
$1680 $169F     32    26     0      6 Ogham
$16A0 $16FF     96    78     0     18 Runic
$1700 $171F     32    17     0     15 Tagalog
$1720 $173F     32    18     0     14 Hanunoo
$1740 $175F     32    18     0     14 Buhid
$1760 $177F     32    16     0     16 Tagbanwa
$1780 $17FF    128    54    10     64 Khmer
$1800 $18AF    176   130    10     36 Mongolian
$18B0 $18FF     80     0     0     80 Unified Canadian Aboriginal Syllabics Extended
$1900 $194F     80    29    10     41 Limbu
$1950 $197F     48    35     0     13 Tai Le
$1980 $19DF     96    49    10     37 New Tai Lue
$19E0 $19FF     32     0     0     32 Khmer Symbols
$1A00 $1A1F     32    23     0      9 Buginese
$1A20 $1AAF    144     0     0    144 Tai Tham
$1AB0 $1AFF     80     0     0     80 Combining Diacritical Marks Extended
$1B00 $1B7F    128    54    10     64 Balinese
$1B80 $1BBF     64    32    10     22 Sundanese
$1BC0 $1BFF     64     0     0     64 Batak
$1C00 $1C4F     80    39    10     31 Lepcha
$1C50 $1C7F     48    36    10      2 Ol Chiki
$1CC0 $1CCF     16     0     0     16 Sundanese Supplement
$1CD0 $1CFF     48     0     0     48 Vedic Extensions
$1D00 $1D7F    128   128     0      0 Phonetic Extensions
$1D80 $1DBF     64    64     0      0 Phonetic Extensions Supplement
$1DC0 $1DFF     64     0     0     64 Combining Diacritical Marks Supplement
$1E00 $1EFF    256   256     0      0 Latin Extended Additional
$1F00 $1FFF    256   218     0     38 Greek Extended
$2000 $206F    112     0     0    112 General Punctuation
$2070 $209F     48     7     0     41 Superscripts and Subscripts
$20A0 $20CF     48     0     0     48 Currency Symbols
$20D0 $20FF     48     0     0     48 Combining Diacritical Marks for Symbols
$2100 $214F     80    46     0     34 Letterlike Symbols
$2150 $218F     64    41     0     23 Number Forms
$2190 $21FF    112     0     0    112 Arrows
$2200 $22FF    256     0     0    256 Mathematical Operators
$2300 $23FF    256     0     0    256 Miscellaneous Technical
$2400 $243F     64     0     0     64 Control Pictures
$2440 $245F     32     0     0     32 Optical Character Recognition
$2460 $24FF    160     0     0    160 Enclosed Alphanumerics
$2500 $257F    128     0     0    128 Box Drawing
$2580 $259F     32     0     0     32 Block Elements
$25A0 $25FF     96     0     0     96 Geometric Shapes
$2600 $26FF    256     0     0    256 Miscellaneous Symbols
$2700 $27BF    192     0     0    192 Dingbats
$27C0 $27EF     48     0     0     48 Miscellaneous Mathematical Symbols-A
$27F0 $27FF     16     0     0     16 Supplemental Arrows-A
$2800 $28FF    256     0     0    256 Braille Patterns
$2900 $297F    128     0     0    128 Supplemental Arrows-B
$2980 $29FF    128     0     0    128 Miscellaneous Mathematical Symbols-B
$2A00 $2AFF    256     0     0    256 Supplemental Mathematical Operators
$2B00 $2BFF    256     0     0    256 Miscellaneous Symbols and Arrows
$2C00 $2C5F     96    94     0      2 Glagolitic
$2C60 $2C7F     32    29     0      3 Latin Extended-C
$2C80 $2CFF    128   101     0     27 Coptic
$2D00 $2D2F     48    38     0     10 Georgian Supplement
$2D30 $2D7F     80    55     0     25 Tifinagh
$2D80 $2DDF     96    79     0     17 Ethiopic Extended
$2DE0 $2DFF     32     0     0     32 Cyrillic Extended-A
$2E00 $2E7F    128     0     0    128 Supplemental Punctuation
$2E80 $2EFF    128     0     0    128 CJK Radicals Supplement
$2F00 $2FDF    224     0     0    224 Kangxi Radicals
$2FF0 $2FFF     16     0     0     16 Ideographic Description Characters
$3000 $303F     64    17     0     47 CJK Symbols and Punctuation
$3040 $309F     96     0     0     96 Hiragana
$30A0 $30FF     96     0     0     96 Katakana
$3100 $312F     48    41     0      7 Bopomofo
$3130 $318F     96    94     0      2 Hangul Compatibility Jamo
$3190 $319F     16     0     0     16 Kanbun
$31A0 $31BF     32    24     0      8 Bopomofo Extended
$31C0 $31EF     48     0     0     48 CJK Strokes
$31F0 $31FF     16     0     0     16 Katakana Phonetic Extensions
$3200 $32FF    256     0     0    256 Enclosed CJK Letters and Months
$3300 $33FF    256     0     0    256 CJK Compatibility
$3400 $4DBF   6592  6582     0     10 CJK Unified Ideographs Extension A
$4DC0 $4DFF     64     0     0     64 Yijing Hexagram Symbols
$4E00 $9FFF  20992 20932     0     60 CJK Unified Ideographs
$A000 $A48F   1168  1165     0      3 Yi Syllables
$A490 $A4CF     64     0     0     64 Yi Radicals
$A4D0 $A4FF     48     0     0     48 Lisu
$A500 $A63F    320   287    10     23 Vai
$A640 $A69F     96    69     0     27 Cyrillic Extended-B
$A6A0 $A6FF     96     0     0     96 Bamum
$A700 $A71F     32     0     0     32 Modifier Tone Letters
$A720 $A7FF    224   109     0    115 Latin Extended-D
$A800 $A82F     48    32     0     16 Syloti Nagri
$A830 $A83F     16     0     0     16 Common Indic Number Forms
$A840 $A87F     64    52     0     12 Phags-pa
$A880 $A8DF     96    50    10     36 Saurashtra
$A8E0 $A8FF     32     0     0     32 Devanagari Extended
$A900 $A92F     48    28    10     10 Kayah Li
$A930 $A95F     48    23     0     25 Rejang
$A960 $A97F     32     0     0     32 Hangul Jamo Extended-A
$A980 $A9DF     96     0     0     96 Javanese
$A9E0 $A9FF     32     0     0     32 Myanmar Extended-B
$AA00 $AA5F     96    52    10     34 Cham
$AA60 $AA7F     32     0     0     32 Myanmar Extended-A
$AA80 $AADF     96     0     0     96 Tai Viet
$AAE0 $AAFF     32     0     0     32 Meetei Mayek Extensions
$AB00 $AB2F     48     0     0     48 Ethiopic Extended-A
$AB30 $AB6F     64     0     0     64 Latin Extended-E
$AB70 $ABBF     80     0     0     80 Cherokee Supplement
$ABC0 $ABFF     64     0     0     64 Meetei Mayek
$AC00 $D7AF  11184 11172     0     12 Hangul Syllables
$D7B0 $D7FF     80     0     0     80 Hangul Jamo Extended-B
$D800 $DB7F    896     0     0    896 High Surrogates
$DB80 $DBFF    128     0     0    128 High Private Use Surrogates
$DC00 $DFFF   1024     0     0   1024 Low Surrogates
$E000 $F8FF   6400     0     0   6400 Private Use Area
$F900 $FAFF    512   467     0     45 CJK Compatibility Ideographs
$FB00 $FB4F     80    56     0     24 Alphabetic Presentation Forms
$FB50 $FDFF    688   591     0     97 Arabic Presentation Forms-A
$FE00 $FE0F     16     0     0     16 Variation Selectors
$FE10 $FE1F     16     0     0     16 Vertical Forms
$FE20 $FE2F     16     0     0     16 Combining Half Marks
$FE30 $FE4F     32     0     0     32 CJK Compatibility Forms
$FE50 $FE6F     32     0     0     32 Small Form Variants
$FE70 $FEFF    144   140     0      4 Arabic Presentation Forms-B
$FF00 $FFEF    240   104    10    126 Halfwidth and Fullwidth Forms
$FFF0 $FFFF     16     0     0     16 Specials
Angehängte Dateien
Dateityp: zip WordCount.zip (733,2 KB, 3x aufgerufen)
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#13

AW: MyGetAverageWordLengthFromFile

  Alt 22. Apr 2016, 19:09
Bei mir gibt IsCharAlpha auch bei den von dir zitierten französischen Alpha Zeichen recht korrekt True zurück, ebenso bei zum Beipiel giechischen, kyrillischen und auch bei den asiatischen Zeichen.
Dann nehme ich selbstverständlich alles zurück und verfluche stattdessen Microsoft für die offensichtlich fehlerhafte Dokumentation der API
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz