Text.h 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518
  1. #ifndef Text_H
  2. #define Text_H
  3. #include "Reader.h"
  4. #include "ReferenceCounter.h"
  5. namespace Framework
  6. {
  7. class Text; //! aus dieser Datei
  8. //! Ein ersatz für String
  9. class Text : public virtual ReferenceCounter
  10. {
  11. private:
  12. char* txt;
  13. char suchGBeg;
  14. char suchGEnd;
  15. int precision;
  16. public:
  17. //! Erstellt ein neues Text Objekt mit dem Wert ""
  18. DLLEXPORT Text();
  19. //! Erstellt ein neues Text Objekt indem der Wert aus (txt) kopiert wird
  20. //! \param txt Der Text, der kopiert werden soll
  21. DLLEXPORT Text(const Text& txt);
  22. //! Erstellt ein neues Text Objekt indem der Wert aus (txt) kopiert wird
  23. //! \param txt Die Zeichenkette, die kopiert werden soll
  24. DLLEXPORT Text(const char* txt);
  25. //! Erstellt ein neues Text Objekt mit einer zahl als text
  26. //! \param zahl Die Zahl, die im Text sein soll
  27. DLLEXPORT Text(int zahl);
  28. //! Erstellt ein neues Text Objekt mit einer zahl als text
  29. //! \param num Die Zahl, die im Text sein soll
  30. DLLEXPORT Text(double num);
  31. //! Erstellt ein neues Text Objekt mit einer zahl als text
  32. //! \param num Die Zahl, die im Text sein soll
  33. DLLEXPORT Text(float num);
  34. //! Löscht den Text
  35. DLLEXPORT ~Text();
  36. //! Wandelt alle buchstaben in großbuchstaben um
  37. DLLEXPORT void toUpperCase();
  38. //! Wandelt alle buchstaben in kleinbuchstaben um
  39. DLLEXPORT void toLowerCase();
  40. //! Legt die Suchgrenzen fest, die von den Suchfunktionen verwendet
  41. //! werden. \param gBeg Das Zeichen, bei dem die Suche beginnen soll
  42. //! \param gEnd Das Zeichen, bei dem die Suche enden soll
  43. DLLEXPORT void setSuchGrenzen(char gBeg, char gEnd);
  44. //! Setzt den Text, den das Zeichnung speichert
  45. //! \param t Eine Zeichenkette, deren Inhalt kopiert wird
  46. DLLEXPORT void setText(const char* t);
  47. //! Setzt den Text, den das Zeichnung speichert
  48. //! \param t Eine Zeichenkette, deren Inhalt kopiert wird
  49. //! \param l Die Länge des Textes, der aus (t) kopiert werden soll
  50. DLLEXPORT void setText(const char* t, int l);
  51. //! Setzt den Text, den das Zeichnung speichert
  52. //! \param t Das TextZeichnung, dessen Inahlt kopiert werden soll
  53. DLLEXPORT void setText(Text* t);
  54. //! Hängt die übergebene Zahl als Hex Text (0-F) ans Ende des Textes an.
  55. //! \param num Die Zahl, die ins Hex System umgewandelt und angehängt
  56. //! werden soll
  57. DLLEXPORT void appendHex(int num);
  58. //! Hängt die übergebene Zahl als Hex Text (0-F) ans Ende des Textes an.
  59. //! \param num Die Zahl, die ins Hex System umgewandelt und angehängt
  60. //! werden soll
  61. DLLEXPORT void appendHex(__int64 num);
  62. //! Fügt den übergebenen Buchtaben der Zeichenkette hinzu
  63. //! \param c Der Buchstabe, der angehängt werden soll
  64. DLLEXPORT void append(char c);
  65. //! Hängt die übergebene Zeichenkette ans Ende des Textes an
  66. //! \param t Die Zeichenkette, deren Kopie ans Ende des Textes angehängt
  67. //! werden soll
  68. DLLEXPORT void append(const char* t);
  69. //! Hängt einen Teil der übergebenen Zeichenkette ans Ende des Textes an
  70. //! \param t Die Zeichenkette, deren Kopie angehängt werden soll
  71. //! \param l Die Länge des Textabschnittes der angehängt werden soll
  72. DLLEXPORT void append(const char* t, int l);
  73. //! Hängt den Inhalt des eines Textes ans Ende des Textes an
  74. //! \param t Der Text, dessen Kopie ans Ende des Textes angehängt werden
  75. //! soll
  76. DLLEXPORT void append(Text* t);
  77. //! Hängt eine Zahl ans Ende Des Textes an
  78. //! \param num Die Zahl, die in einen Text umgewandelt und am Ende
  79. //! angehängt werden soll
  80. DLLEXPORT void append(int num);
  81. //! Hängt eine Zahl ans Ende Des Textes an
  82. //! \param num Die Zahl, die in einen Text umgewandelt und am Ende
  83. //! angehängt werden soll
  84. DLLEXPORT void append(__int64 num);
  85. //! Hängt eine Zahl ohne Vorzeichenbit am Ende des Textes an
  86. //! \param num Die Zahl, die in einen Text umgewandelt und am Ende
  87. //! angehängt werden soll
  88. DLLEXPORT void append(unsigned int num);
  89. //! Hängt eine Kommazahl am Ende des Textes an
  90. //! \param num Die Kommazahl, die am Ende des Textes angehängt werden
  91. //! soll
  92. DLLEXPORT void append(double num);
  93. //! Hängt eine Kommazahl am Ende des Textes an
  94. //! \param num Die Kommazahl, die am Ende des Textes angehängt werden
  95. //! soll
  96. DLLEXPORT void append(float num);
  97. //! Fügt an einer Bestimmten Stelle ein Zeichen in den Text ein
  98. //! \param p Die position im Text bei der das Zeichen eingefügt werden
  99. //! soll \param c Das Zeichen, das eingefügt werden soll
  100. DLLEXPORT void insert(int p, char c);
  101. //! Fügt an einer Bestimmten Stelle im Text eine Zeichenkette ein
  102. //! \param p Die position im Text bei der die Zeichenkette eingefügt
  103. //! werden soll \param t Die Zeichenkette, deren Kopie an eingefügt
  104. //! werden soll
  105. DLLEXPORT void insert(int p, const char* t);
  106. //! Fügt den Inhalt eines Textes an einer Bestimmten Stelle im Text ein
  107. //! \param p Die Position im Text, bei der der inhalt des Textest
  108. //! eingefügt werden soll \param t Der Text, dessen Kopie an der Stelle
  109. //! eingefügt werden soll
  110. DLLEXPORT void insert(int p, Text* t);
  111. //! Ersetzt einen bestimmten Textabschnitt mit einer anderen
  112. //! Zeichenkette
  113. //! p1: Die Startposition des zu ersetzenden Textabschnittes
  114. //! p2: Die Endposition des zu ersetzenden Textabschnittes
  115. //! \param t Die Zeichenkette, die an die entsprechende Stelle kopiert
  116. //! werden soll Beispiel: ( "Hallo Welt" ).ersetzen( 2, 5, "lt" );
  117. //! ergibt: "Halt Welt"
  118. DLLEXPORT void ersetzen(int p1, int p2, const char* t);
  119. //! Ersetzt einen bestimmten Textabschnitt mit dem Inhalt eines anderen
  120. //! Textes
  121. //! p1: Die Startposition des zu ersetzenden Textabschnittes
  122. //! p2: Die Endposition des zu ersetzenden Textabschnittes
  123. //! \param t Der Text, dessen Inhalt an die entsprechende Stelle kopiert
  124. //! werden soll Beispiel: ( "Hallo Welt" ).ersetzen( 2, 5, new Text(
  125. //! "lt" ) ); ergibt: "Halt Welt"
  126. DLLEXPORT void ersetzen(int p1, int p2, Text* t);
  127. //! Sucht und erstetzt jedes Vorkommen eines bestimmten Buchstaben durch
  128. //! einen anderen
  129. //! c1: Der Buchstabe der ersetzt werden soll
  130. //! c2: Der Buchstabe, durch den der Andere ersetzt werden soll
  131. DLLEXPORT void ersetzen(char c1, char c2);
  132. //! Sucht und erstetzt jedes Vorkommen einer bestimmten Zeichenkette
  133. //! durch eine andere
  134. //! t1: Die Zeichenkette, die ersetzt werden soll
  135. //! t2: Die Zeichenkette, durch welche die Andere ersetzt werden soll
  136. DLLEXPORT void ersetzen(const char* t1, const char* t2);
  137. //! Sucht und erstetzt jedes Vorkommen des Inhalts eines Textes durch
  138. //! eine andere Zeichenkette
  139. //! t1: Der Text, dessen Inhalt gesucht und ersetzt wird
  140. //! t2: Die Zeichenkette, durch welche das Vorkommen des Textes ersetzt
  141. //! werden soll
  142. DLLEXPORT void ersetzen(Text* t1, const char* t2);
  143. //! Sucht und erstetzt jedes Vorkommen einer Zeichenkette durch den
  144. //! Inhalt eines Textes
  145. //! t1: Die Zeichenkette, die ersetzt werden soll
  146. //! t2: Der Text, dessen Inhalt das Vorkommen der Zeichenkette
  147. //! ersetzten soll
  148. DLLEXPORT void ersetzen(const char* t1, Text* t2);
  149. //! Sucht und erstetzt jedes Vorkommen des Inhalts eines Textes durch
  150. //! den Inhalt eines anderen Textes
  151. //! t1: Der Text, dessen Vorkommen ersetzt werden sollen
  152. //! t2: Der Text, dessen Inhalt das Vorkommen der Zeichenkette
  153. //! ersetzten soll
  154. DLLEXPORT void ersetzen(Text* t1, Text* t2);
  155. //! Ersetzt das i-te auftreten eines bestimmten Buchstaben mit einem
  156. //! anderen Buchstaben \param i Das wie vielte Auftreten des Buchstabens
  157. //! ersetzt werden soll
  158. //! c1: Der Buchstabe, dessen i-tes Auftreten erstetzt werden soll
  159. //! c2: Der Buchstabe, der das i-te Auftreten des anderen Buchstabens
  160. //! ersetzen soll
  161. DLLEXPORT void ersetzen(int i, char c1, char c2);
  162. //! Ersetzt das i-te auftreten einer bestimmten Zeichenkette mit einer
  163. //! anderen Zeichenkette \param i Das wie vielte Auftreten der
  164. //! Zeichenkette ersetzt werden soll
  165. //! c1: Die Zeichenkette, dessen i-tes Auftreten erstetzt werden soll
  166. //! c2: Die Zeichenkette, die das i-te Auftreten der anderen
  167. //! Zeichenkette ersetzen soll
  168. DLLEXPORT void ersetzen(int i, const char* t1, const char* t2);
  169. //! Ersetzt das i-te auftreten des Inhalts eines Textes mit einer
  170. //! Zeichenkette \param i Das wie vielte Auftreten des Textes ersetzt
  171. //! werden soll
  172. //! c1: Der Text, dessen i-tes Auftreten erstetzt werden soll
  173. //! c2: Die Zeichenkette, die das i-te Auftreten des Textes ersetzen
  174. //! soll
  175. DLLEXPORT void ersetzen(int i, Text* t1, const char* t2);
  176. //! Ersetzt das i-te auftreten einer bestimmten Zeichenkette mit dem
  177. //! Inhalt eines Textes \param i Das wie vielte Auftreten der
  178. //! Zeichenkette ersetzt werden soll
  179. //! c1: Die Zeichenkette, dessen i-tes Auftreten erstetzt werden soll
  180. //! c2: Der Text, dessen Inhalt das i-te Auftreten der Zeichenkette
  181. //! ersetzen soll
  182. DLLEXPORT void ersetzen(int i, const char* t1, Text* t2);
  183. //! Ersetzt das i-te auftreten eines bestimmten Textes mit dem Inhalt
  184. //! eines anderen Textes \param i Das wie vielte Auftreten des Textes
  185. //! ersetzt werden soll
  186. //! c1: Der Text, dessen i-tes Auftreten erstetzt werden soll
  187. //! c2: Der Text, dessen Inhalt das i-te Auftreten des anderen Textes
  188. //! ersetzen soll
  189. DLLEXPORT void ersetzen(int i, Text* t1, Text* t2);
  190. //! Löscht den bisherigen Text und erzeugt einen Text, der aus einem
  191. //! Bestimten Buchstaben besteht, mit einer bestimmten Länge \param c
  192. //! Der Buchstabe, aus dem der Text bestehen soll \param length Die
  193. //! Länge des Textes
  194. DLLEXPORT void fillText(char c, int length);
  195. //! Löscht ein Bestimmtes Zeichen aus dem Text
  196. //! \param p Die Position des zu löschenden Zeichens
  197. DLLEXPORT void remove(int p);
  198. //! Löscht einen Bestimmten Textabschnitt
  199. //! p1: Die Startposition des zu löschenden Abschnittes
  200. //! p2: Die Endposition des zu löschenden Abschnittes (Das Zeichen bei
  201. //! p2 bleibt erhalten)
  202. DLLEXPORT void remove(int p1, int p2);
  203. //! Löscht jedes Vorkommen eines bestimmten Buchsaben
  204. //! \param c Der Buchstabe, dessen Vorkommen gelöscht werden soll
  205. DLLEXPORT void remove(char c);
  206. //! Löscht jedes Vorkommen einer bestimmten Zeichenkette
  207. //! \param t Die Zeichenkette, deren Vorkommen entfernt werden sollen
  208. DLLEXPORT void remove(const char* t);
  209. //! Löscht jedes Vorkommen des Inhalts eines Textes
  210. //! \param t Der text, dessen Inhalt gelöscht werden soll
  211. DLLEXPORT void remove(Text* t);
  212. //! Löscht das i-te Vorkommen eines bestimmten Buchstaben
  213. //! \param i Das wie vielte Vorkommen des Buchstabens gelöscht werden
  214. //! soll \param c Der Buchstabe, dessen i-tes Vorkommen gelöscht werden
  215. //! soll
  216. DLLEXPORT void remove(int i, char c);
  217. //! Löscht das i-te Vorkommen einer bestimmten Zechenkette
  218. //! \param i Das wie vielte Vorkommen der Zeichenkette gelöscht werden
  219. //! soll \param t Die Zeichenkette, dessen i-tes Vorkommen gelöscht
  220. //! werden soll
  221. DLLEXPORT void remove(int i, const char* t);
  222. //! Löscht das i-te Vorkommen eines bestimmten Textinhaltes
  223. //! \param i Das wie vielte Vorkommen des Textinhaltes gelöscht werden
  224. //! soll \param t Der Text, dessen i-tes Vorkommen gelöscht werden soll
  225. DLLEXPORT void remove(int i, Text* t);
  226. //! Löscht alle ' ', '\n', '\r', '\t' bis zu einem anderen buchstaben
  227. //! \param pos Die Position des ersten zeichens
  228. DLLEXPORT void removeWhitespaceAfter(int pos);
  229. //! Löscht alle ' ', '\n', '\r', '\t' bis zu einem anderen buchstaben
  230. //! \param pos Die Position des ersten zeichens (beginnt bei pos-1)
  231. DLLEXPORT void removeWhitespaceBefore(int pos);
  232. //! Setzt die Anzahl der Nachkommastellen beim Anhängen von Kommazahlen
  233. //! \param p Die Anzahl der Stellen nach dem Komma
  234. DLLEXPORT void setPrecision(int p);
  235. //! Gibt die Länge des Textes zurück
  236. DLLEXPORT int getLength() const;
  237. //! Ermittelt die neue Curserposition nachdem Drücken der 'Links'
  238. //! Pfeiltaste \param pos Die alte Curserposition
  239. DLLEXPORT int getLKick(int pos) const;
  240. //! Ermittelt die neue Curserposition nachdem Drücken der 'Oben'
  241. //! Pfeiltaste \param pos Die alte Curserposition
  242. DLLEXPORT int getOKick(int pos) const;
  243. //! Ermittelt die neue Curserposition nachdem Drücken der 'Rechts'
  244. //! Pfeiltaste \param pos Die alte Curserposition
  245. DLLEXPORT int getRKick(int pos) const;
  246. //! Ermittelt die neue Curserposition nachdem Drücken der 'Unten'
  247. //! Pfeiltaste \param pos Die alte Curserposition
  248. DLLEXPORT int getUKick(int pos) const;
  249. //! Überprüft, ob im Text der Inhalt eines anderen Textes vorkommt
  250. //! \param t Der Text, nach dessen Inhalt gesucht werden soll
  251. //! \return (true), wenn der Inhalt des Textes vorkommt. (false) sonnst
  252. DLLEXPORT bool hat(Text* t) const;
  253. //! Überprüft, ob im Text eine bestimmte Zeichenkette vorkommt
  254. //! \param t Die Zeichenkette, nach der gesucht werden soll
  255. //! \return (true), wenn die Zeichenkette vorkommt. (false) sonnst
  256. DLLEXPORT bool hat(const char* t) const;
  257. //! Überprüft, ob im Text der Inhalt eines anderen Textes vorkommt
  258. //! \param t Der Text, nach dessen Inhalt gesucht werden soll
  259. //! \return (true), wenn der Inhalt des Textes vorkommt. (false) sonnst
  260. //! \param pos die position an der die zeichenkette im string beginnen
  261. //! soll
  262. DLLEXPORT bool hatAt(int pos, Text* t) const;
  263. //! Überprüft, ob im Text eine bestimmte Zeichenkette vorkommt
  264. //! \param t Die Zeichenkette, nach der gesucht werden soll
  265. //! \return (true), wenn die Zeichenkette vorkommt. (false) sonnst
  266. //! \param pos die position an der die zeichenkette im string beginnen
  267. //! soll
  268. DLLEXPORT bool hatAt(int pos, const char* t) const;
  269. //! Überprüft, ob im Text ein bestimmtes Zeichen vorkommt
  270. //! \param c Das Zeichen, nach dem gesucht werden soll
  271. //! \return (true), wenn das Zeichen vorkommt. (false) sonnst
  272. DLLEXPORT bool hat(char c) const;
  273. //! Überprft, ob der Text den selben Inhalt wie eine Zeichenkette hat
  274. //! \param t Die Zeichenkette, die verglichen werden soll
  275. //! \return (true), wenn der Inhalt des Textes gleich der Zeichenkette
  276. //! ist. (false) sonst
  277. DLLEXPORT bool istGleich(const char* t) const;
  278. //! Überprft, ob der Text den selben Inhalt wie ein anderer Text hat
  279. //! \param t Der Text, dessen Inhalt verglichen werden soll
  280. //! \return (true), wenn die Inhalte der Texte übereinstimmen. (false)
  281. //! sonst
  282. DLLEXPORT bool istGleich(Text* t) const;
  283. //! Gibt den Inhalt des Textes als Zeichenkette zurück
  284. DLLEXPORT const char* getText() const;
  285. //! Zählt, wie oft ein bestimmter Buchstabe im Text vorkomt
  286. //! \param c Der Buchstabe, der gezählt werden soll
  287. //! \return Die Anzahl des Buchstabens im Text
  288. DLLEXPORT int anzahlVon(char c) const;
  289. //! Zählt, wie oft eine bestimmte Zeichenkette im Text vorkommt
  290. //! \param t Die Zeichenkette, die gezählt werden soll
  291. //! \return Die Anzahl der Zeichenkette im Text
  292. DLLEXPORT int anzahlVon(const char* t) const;
  293. //! Zählt, wie oft der Inhalt eines Textest im Text vorkommt
  294. //! \param t Der Text, dessen Inhalt gezählt werden soll
  295. //! \return Die Anzahl des Textinhaltes im Text
  296. DLLEXPORT int anzahlVon(Text* t) const;
  297. //! Gibt die erste Position eines bestimmten Buchstabens im Text zurück
  298. //! \param c Der Buchstabe, der gefunden werden soll
  299. //! \return Die Position des ersten Vorkommens des Buchstabens
  300. DLLEXPORT int positionVon(char c) const;
  301. //! Gibt die erste Position einer bestimmten Zeichenkette im Text zurück
  302. //! \param t Die Zeichenkette, die gefunden werden soll
  303. //! \return Die Position des ersten Vorkommens der Zeichenkette
  304. DLLEXPORT int positionVon(const char* t) const;
  305. //! Gibt die erste Position eines Textinhaltes im Text zurück
  306. //! \param t Der Text, dessen Inhalt gefunden werden soll
  307. //! \return Die Position des ersten Vorkommens des Textinhaltes
  308. DLLEXPORT int positionVon(Text* t) const;
  309. //! Gibt die i-te Position eines bestimmten Buchstabens im Text zurück
  310. //! \param c Der Buchstabe, der gefunden werden soll
  311. //! \param i Das wievielte Vorkommen gefunden werden soll
  312. //! \return Die Position des i-ten Vorkommens des Buchstabens
  313. DLLEXPORT int positionVon(char c, int i) const;
  314. //! Gibt die i-te Position einer bestimmten Zeichenkette im Text zurück
  315. //! \param t Die Zeichenkette, die gefunden werden soll
  316. //! \param i Das wievielte Vorkommen gefunden werden soll
  317. //! \return Die Position des i-ten Vorkommens der Zeichenkette
  318. DLLEXPORT int positionVon(const char* t, int i) const;
  319. //! Gibt die i-te Position eines Textinhaltes im Text zurück
  320. //! \param t Der Text, dessen Inhalt gefunden werden soll
  321. //! \param i Das wievielte Vorkommen gefunden werden soll
  322. //! \return Die Position des i-ten Vorkommens des Textinhaltes
  323. DLLEXPORT int positionVon(Text* t, int i) const;
  324. //! Gibt einen Text zurück, der eine Kopie eines bestimmten
  325. //! Textabschnittes enthält
  326. //! p1: Die Startposition des Textabschnittes
  327. //! p2: Die Endposition des Textabschnittes (nicht enthalten)
  328. DLLEXPORT Text* getTeilText(int p1, int p2) const;
  329. //! Gibt einen Text zurück, der eine Kopie eines bestimmten
  330. //! Textabschnittes enthält
  331. //! p1: Die Startposition des Textabschnittes (Der Textabschnitt geht
  332. //! bis ans Ende des Textes)
  333. DLLEXPORT Text* getTeilText(int p) const;
  334. // berechnet den Hash code des textes
  335. DLLEXPORT int hashCode() const;
  336. //! Hängt eine Zahl ans Ende des Textes an
  337. DLLEXPORT Text& operator+=(const int num);
  338. //! Hängt eine Zahl ans Ende des Textes an
  339. DLLEXPORT Text& operator+=(const __int64 num);
  340. //! Hängt eine Kommazahl ans Ende des Textes an
  341. DLLEXPORT Text& operator+=(const double num);
  342. //! Hängt eine Kommazahl ans Ende des Textes an
  343. DLLEXPORT Text& operator+=(const float num);
  344. //! Hängt eine Zeichenkette ans Ende des Textes an
  345. DLLEXPORT Text& operator+=(const char* txt);
  346. //! Hängt eine Kopie des Inhalts eines Textes ans Ende des Textes an
  347. DLLEXPORT Text& operator+=(const Text& txt);
  348. //! Setzt den Inhalt des Textes gleich einer Zahl
  349. DLLEXPORT Text& operator=(const int num);
  350. //! Setzt den Inhalt des Textes gleich einer Kommazahl
  351. DLLEXPORT Text& operator=(const double num);
  352. //! Setzt den Inhalt des Textes gleich einer Kommazahl
  353. DLLEXPORT Text& operator=(const float num);
  354. //! Setzt den Inahlt des Textes gleich einer Zeichenkette
  355. DLLEXPORT Text& operator=(const char* txt);
  356. //! Setzt den Inhalt des Textes gleich einer Kopie des Inhalts eines
  357. //! anderen Textes
  358. DLLEXPORT Text& operator=(const Text& txt);
  359. //! Gibt den Inhalt des Textes als Zeichenkette zurück
  360. DLLEXPORT operator const char*() const;
  361. //! Konviertiert den Inhalt des Textes zu einer Zahl
  362. DLLEXPORT explicit operator int() const;
  363. //! Konviertiert den Inhalt des Textes zu einer Zahl
  364. DLLEXPORT explicit operator __int64() const;
  365. //! Konviertiert den Inhalt des Textes zu einer Kommazahl
  366. DLLEXPORT explicit operator double() const;
  367. //! Konviertiert den Inhalt des Textes zu einer Kommazahl
  368. DLLEXPORT explicit operator float() const;
  369. //! Prüft, ob der Inhalt des Textes nach alphabetischer Ordnung später
  370. //! kommt als der Inhalt eines anderen Textes
  371. DLLEXPORT bool operator>(Text& t) const;
  372. //! Prüft, ob der Inhalt des Textes nach alphabetischer Ordnung früher
  373. //! kommt als der Inhalt eines anderen Textes
  374. DLLEXPORT bool operator<(Text& t) const;
  375. //! Erstellt einen neuen Text bestehend aus diesem und t2
  376. DLLEXPORT Text operator+(const Text& t2) const;
  377. //! Erstellt einen neuen Text bestehend aus diesem und t2
  378. DLLEXPORT Text operator+(const char* t2) const;
  379. //! Erstellt einen neuen Text bestehend aus diesem und num
  380. DLLEXPORT Text operator+(const int num) const;
  381. //! Erstellt einen neuen Text bestehend aus diesem und num
  382. DLLEXPORT Text operator+(const __int64 num) const;
  383. //! Erstellt einen neuen Text bestehend aus diesem und num
  384. DLLEXPORT Text operator+(const double num) const;
  385. //! Erstellt einen neuen Text bestehend aus diesem und num
  386. DLLEXPORT Text operator+(const float num) const;
  387. //! Prüft ob der Text mit dem anderen Text übereinstimmt
  388. DLLEXPORT bool operator==(const Text& right) const;
  389. };
  390. class TextReader : public Reader,
  391. public virtual ReferenceCounter
  392. {
  393. private:
  394. Text* txt;
  395. __int64 lPos;
  396. public:
  397. //! Konstructor
  398. //! \param txt Der Text der gelesen werden soll. Er wird nicht kopiert
  399. //! sondern direkt gelesen.
  400. DLLEXPORT TextReader(Text* txt);
  401. //! Destructor
  402. DLLEXPORT virtual ~TextReader();
  403. //! Setzt die Position des Bytes, das als nächstes gelesen werden soll
  404. //! \param pos Der Index des Bytes
  405. //! \param ende 1, wenn der Index vom ende des Textes zählt. 0, wenn der
  406. //! Index vom Beginn des Textes zählt
  407. DLLEXPORT void setLPosition(__int64 pos, bool ende) override;
  408. //! Ließt aus der Datei
  409. //! \param bytes Ein Array, der mit Bytes aus dem Text gefüllt werden
  410. //! soll \param len Wie viele Bytes aus dem Text gelesen werden sollen
  411. DLLEXPORT void lese(char* bytes, int len) override;
  412. //! Ließt die nächste zeile des Textes ein
  413. //! \return Die gelesene Zeile als Text mit zeilenumbruch
  414. DLLEXPORT Text* leseZeile() override;
  415. //! Prüft, ob die Resource vollständig gelesen wurde
  416. //! return 1, wenn die Resource vollständig gelesen wurde. 0, sonst
  417. DLLEXPORT bool istEnde() const override;
  418. //! Gibt den Index des Bytes aus dem Text zurück, welches als nächstes
  419. //! gelesen werden würde return -1, falls ein Fehler aufgetreten ist.
  420. //! Sonst die Position des Lesezeigers
  421. DLLEXPORT __int64 getLPosition() const override;
  422. //! Gibt die Anzahl der zu lesenden Bytes zurück
  423. DLLEXPORT __int64 getSize() const override;
  424. };
  425. //! Durchsucht eine Zeichenkette nach dem num-ten Vorkommen eines bestimmten
  426. //! Buchstabens \param string Die zu durchsuchende Zeichenkette \param c Der
  427. //! zu suchende Buchstabe \param num Das wievielte Vorkommen des Buchtaben
  428. //! gefunden werden soll \return (-1), wenn es kein num-tes Vorkommen des
  429. //! Buchstaben gibt. Sonst die Position des num-ten Vorkommens in der
  430. //! Zeichenkette
  431. DLLEXPORT int stringPositionVonChar(const char* string,
  432. char c,
  433. int num); //! sucht die position des num-ten c-s in string, -1 bei nicht
  434. //! gefunden
  435. //! Durchsucht eine Zeichenkette nach einer Anderen Zeichenkette
  436. //! \param string Die zu durchsuchende Zeichenkette
  437. //! \param suche Die Zeichenkette, nach der gesucht werden soll
  438. //! \param sBegPos Die Position, ab der die Suche begonnen werden soll
  439. //! \return Die Position, an der die zu suchende Zeichenkette erstmals
  440. //! gefunden wurde. (-1) Wenn nichts gefunden wurde.
  441. DLLEXPORT int stringPositionVonString(
  442. const char* string, char* suche, int sBegPos);
  443. //! Kopiert eine bestimmte Zeichenkette in die Zwischenablage des
  444. //! Betriebssystems \param txt Die Zeichenkette, die kopiert werden soll
  445. DLLEXPORT void TextKopieren(const char* txt);
  446. //! Ermittelt, ob in der Zwischenablage des Betriebssystems eine
  447. //! Zeichenkette steht. \return Die Zeichenkette aus der Zwischenablage.
  448. //! Wenn keine Zeichenkette kopiert wurde, wird eine lehre Zeichenkette
  449. //! zurückgegeben.
  450. DLLEXPORT char* TextInsert();
  451. //! Wandelt einen bestimmten schreibbaren Buchstaben in einen Groß- oder
  452. //! Kleinbuchstaben um \param c Der Buchstabe, der umgewandelt werden soll
  453. //! \param groß Wenn (true), so wird der Buchstabe in einen Großbuchstaben
  454. //! umgewandelt. Wenn (false), wird er in einen Kleinbuchstaben umgewandelt.
  455. //! \return Den umgewandelten Buchstaben
  456. DLLEXPORT char smallOrBig(char c, bool big);
  457. //! Ermittelt, ob ein Buchstabe ein schreibbares Zeichen ist
  458. //! \param zeichen Der Buchstabe, der geprüft werden soll
  459. //! \return (true), wenn der Buchstabe gezeichnet werden kann. (false)
  460. //! sonnst
  461. DLLEXPORT bool istSchreibbar(unsigned char zeichen);
  462. //! Konvertiert eine Zahl aus einer Zeichenkette in belibiger Basis zu einer
  463. //! Zahl \param c Die Zeichenkette, in der Die Zahl steht \param system Die
  464. //! Basis der Zahl \return Die Zahl, die im Text stand
  465. DLLEXPORT unsigned int TextZuInt(const char* c, int system);
  466. //! Konvertiert eine Zahl aus einer Zeichenkette in belibiger Basis zu einer
  467. //! Zahl \param c Die Zeichenkette, in der Die Zahl steht
  468. //! c_ende: Wird duch die Funktion gesetzt und darf 0 sein. Zeigt auf das
  469. //! nächste Zeichen in der Zeichenkette, das nach der Zah steht
  470. //! \param system Die Basis der Zahl
  471. //! \return Die Zahl, die im Text stand
  472. DLLEXPORT unsigned int TextZuInt(const char* c, char** c_ende, int system);
  473. //! Konvertiert eine Zahl aus einer Zeichenkette in belibiger Basis zu einer
  474. //! Zahl \param c Die Zeichenkette, in der Die Zahl steht \param system Die
  475. //! Basis der Zahl \return Die Zahl, die im Text stand
  476. DLLEXPORT unsigned __int64 TextZuInt64(const char* c, int system);
  477. //! Konvertiert eine Zahl aus einer Zeichenkette in belibiger Basis zu einer
  478. //! Zahl \param c Die Zeichenkette, in der Die Zahl steht
  479. //! c_ende: Wird duch die Funktion gesetzt und darf 0 sein. Zeigt auf das
  480. //! nächste Zeichen in der Zeichenkette, das nach der Zah steht
  481. //! \param system Die Basis der Zahl
  482. //! \return Die Zahl, die im Text stand
  483. DLLEXPORT unsigned __int64 TextZuInt64(
  484. const char* c, char** c_ende, int system);
  485. //! Konvertiert eine Zeichenkette zu einem Double
  486. //! \param c Die Zeichenkette, die konvertiert werden soll
  487. //! \return Das double, was in der Zeichenkette stand
  488. DLLEXPORT double TextZuDouble(const char* c);
  489. //! Konvertiert eine Zeichenkette zu einem Float
  490. //! \param c Die Zeichenkette, die konvertiert werden soll
  491. //! \return Das float, was in der Zeichenkette stand
  492. DLLEXPORT float TextZuFloat(const char* c);
  493. //! Konvertiert eine Zeichenkette zu einem Double
  494. //! \param c Die Zeichenkette, die konvertiert werden soll
  495. //! c_ende: Wird duch die Funktion gesetzt und darf 0 sein. Ein Zeiger auf
  496. //! das nächste Zeichen nach dem Double in der Zeichenkette
  497. //! \return Das double, was in der Zeichenkette stand
  498. DLLEXPORT double TextZuDouble(const char* c, char** c_ende);
  499. //! Konvertiert eine Zeichenkette zu einem float
  500. //! \param c Die Zeichenkette, die konvertiert werden soll
  501. //! c_ende: Wird duch die Funktion gesetzt und darf 0 sein. Ein Zeiger auf
  502. //! das nächste Zeichen nach dem float in der Zeichenkette
  503. //! \return Das float, was in der Zeichenkette stand
  504. DLLEXPORT float TextZuFloat(const char* c, char** c_ende);
  505. //! Ermittelt die Länge einer bestimmten Zeichenkette
  506. //! \param txt Die Zeichenkette, deren Länge ermittelt werden soll
  507. //! \return Die Länge der Zeichenkette
  508. DLLEXPORT int textLength(const char* txt);
  509. } // namespace Framework
  510. #endif