Ja und? Soll ich mich jetzt entschuldigen, dass ich einen Lösungsvorschlag gemacht habe?creed steiger hat geschrieben:Für dich ist da klar einfach.Allerdings muss ein Anfänger erstmal auf
http://wiki.lazarus.freepascal.org/Theodp" onclick="window.open(this.href);return false;
kommen,offiziell ist das ja bei Lazarus nicht dabei?
Wenn du mal den Stecker ziehst ist es auch weg im SVN ist dein Code ja auch nicht.
Mengen definieren
Re: Mengen definieren
-
- Beiträge: 958
- Registriert: Mo 11. Sep 2006, 22:56
Re: Mengen definieren
War ja nicht bös gemeint....
Ich kenn deine Beiträge und Lösungen als pragmatisch und wohldurchdacht.
Nur wie bringt man die Anfänger an den Klippen vorbei,bzw wie wird das in anderen IDE´s gemacht?
Oder sollten deine UTF-8 Tools nur mehr propagiert und sichtbarer gemacht werden?
Ich kenn deine Beiträge und Lösungen als pragmatisch und wohldurchdacht.
Nur wie bringt man die Anfänger an den Klippen vorbei,bzw wie wird das in anderen IDE´s gemacht?
Oder sollten deine UTF-8 Tools nur mehr propagiert und sichtbarer gemacht werden?
Re: Mengen definieren
Was hätte ich davon? Das ist mir total egal, ich wollte nur behilflich sein.creed steiger hat geschrieben: Oder sollten deine UTF-8 Tools nur mehr propagiert und sichtbarer gemacht werden?
Das werde ich wohl in Zukunft unterlassen.
-
- Beiträge: 657
- Registriert: Sa 9. Jan 2010, 17:32
- OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
- CPU-Target: 64Bit
Re: Mengen definieren
for..in löst das Problem der quadratischen Komplexität beim Traversieren von UTF8-Strings.theo hat geschrieben:Du hast immer einen flotten Spruch auf Lager, was?carli hat geschrieben: Nur zu doof, dass dieser Code quadratische Komplexität hat.
Bin durchaus an besseren Vorschlägen interessiert.
Welcher Beitrag war das, der "nicht ging"?
Re: Mengen definieren
Kannst du mal ein Beispiel machen?carli hat geschrieben: for..in löst das Problem der quadratischen Komplexität beim Traversieren von UTF8-Strings.
Der OP wollte das ß in die Menge aufnehmen. Wie machst du das?carli hat geschrieben: Welcher Beitrag war das, der "nicht ging"?
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: Mengen definieren
Sets werden mit 16 Bit zu gross. Als Ersatz bietet sich case an:theo hat geschrieben: Der OP wollte das ß in die Menge aufnehmen. Wie machst du das?
Code: Alles auswählen
{$codepage utf8}
[...]
var
ch1: unicodechar;
[...]
case ch1 of
'a'..'z','A','ä','ß': begin
end;
[...]
Re: Mengen definieren
Danke mse, das weiss ich selber. Ich hätte die Antwort lieber von diesem großkotzigen carli gehört.mse hat geschrieben:Sets werden mit 16 Bit zu gross. Als Ersatz bietet sich case an:
Der hat bestimmt noch einen Trick auf Lager.

-
- Beiträge: 657
- Registriert: Sa 9. Jan 2010, 17:32
- OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
- CPU-Target: 64Bit
Re: Mengen definieren
http://wiki.freepascal.org/for-in_loop" onclick="window.open(this.href);return false;theo hat geschrieben:Kannst du mal ein Beispiel machen?carli hat geschrieben: for..in löst das Problem der quadratischen Komplexität beim Traversieren von UTF8-Strings.
unterster Abschnitt
einfach for..in mit utf8string benutzen..
hab ich nie behauptet, dass das mit set of geht. UnicodeChar ist einfach zu groß für ein set of.theo hat geschrieben:Der OP wollte das ß in die Menge aufnehmen. Wie machst du das?carli hat geschrieben: Welcher Beitrag war das, der "nicht ging"?
Re: Mengen definieren
Kannst du da bitte mal ein vollständiges Beispiel machen, welches mit FPC 2.6.X läuft?carli hat geschrieben: http://wiki.freepascal.org/for-in_loop" onclick="window.open(this.href);return false;
unterster Abschnitt
einfach for..in mit utf8string benutzen..
Und warum soll das schneller sein als mein Vorschlag?
Du hast jedenfalls die Beispiele gebracht. Du wusstest also, dass die im vorliegenden Fall nicht funktionieren? Merkwürdig.carli hat geschrieben: hab ich nie behauptet, dass das mit set of geht.
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Mengen definieren
Ah, der berühmte Unicode-String Iteratortheo hat geschrieben: s:=TUTF8Scanner.Create('aböcdüefgöhß');

Wenn es dafür noch das passende Syntax-Cady gäbe, dass man einfach
Code: Alles auswählen
for myChar in 'aböcdüefgöhß'.NextPrintableChar do
Ok, Veteranen, müssen umlernen, aber es bleibt handhabbar.
-Michael
(Lustig dass diese Thread parallel zum Thread "FPC Unicode support" läuft der gnau ds zum Thema hat.

-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Mengen definieren
bevor die Unicode-Tauglichkeit eingeführt wurde war das kein Problemcreed steiger hat geschrieben:Wie lösen eigentlich anderes IDE´s/Sprachen das Problem mit den Kodierungen?
In Delphi XE und bei mse sind Character 16 Bit. Damit gehen zwar vermutlich keine Sets, aber zumindest "case" funktioniert (auf Windows !) mit deutschen Zeichen ordentlich. Ob das bei ms auch auf Mac (da gibt es anscheinend irgendwelche sehr gewöhnungsbedürftige Unicode-Codierungen) funktioniert, weiß ich nicht.
Bei ANSI-C gibt es überhaupt keine Strings

-Michael
Zuletzt geändert von mschnell am So 22. Apr 2012, 09:02, insgesamt 2-mal geändert.
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: Mengen definieren
Hast du "{$codepage utf8}" beachtet?theo hat geschrieben:Danke mse, das weiss ich selber.mse hat geschrieben:Sets werden mit 16 Bit zu gross. Als Ersatz bietet sich case an:
Zuletzt geändert von mse am So 22. Apr 2012, 10:30, insgesamt 1-mal geändert.
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Mengen definieren
Er hat aber recht (was in diesem konkreten Beispiel natürlich keine Nachteiligen Auswirkungen hat, aber bei längeren Strings zur Katastrophe führt.)theo hat geschrieben:Du hast immer einen flotten Spruch auf Lager, was?.carli hat geschrieben: Nur zu doof, dass dieser Code quadratische Komplexität hat.
Ein ordentlicher String Iterator würde das Problem ohne quadratische Komplexität (O(n) statt O(n²)) lösen (siehe "FPC Unicode Support" Thread).
-Michael
Re: Mengen definieren
Warum?mschnell hat geschrieben: Er hat aber recht
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Mengen definieren
Wenn vor dem Abprüfen auch nur eines Zeichens, der String komplett umcodiert wird, werden schon da alle Zeichen bearbeitet. Das kann bei entsprechend schlecht konditionierten Aufgaben zu O(n²) führen. Bei einfachen Beispielen (alle Zeichens des Strings angucken) ist es nur in etwa eine Verdoppelung des Aufwands.
-Michael
-Michael