konto usunięte

Temat: Problem z D2009 (?)

W Delphi 2009 String=UnicodeString. Oznacza to że jeden znak zajmuje teraz DWA bajty. Jest bardzo dużo oprogramowania które zakłada że jeden znak = jeden bajt. Jak radzicie sobie z tym problemem ?
Ja próbowałem zamienić wszystkie wystąpienia PCHAR na PBYTE ale to niestety nie pomaga.
Dariusz Jurojć

Dariusz Jurojć Kierownik działu
rozwoju
oprogramowania/proje
ktant/progra...

Temat: Problem z D2009 (?)

Tomasz Hutnik:
W Delphi 2009 String=UnicodeString. Oznacza to że jeden znak zajmuje teraz DWA bajty. Jest bardzo dużo oprogramowania które zakłada że jeden znak = jeden bajt. Jak radzicie sobie z tym problemem ?
Ja próbowałem zamienić wszystkie wystąpienia PCHAR na PBYTE ale to niestety nie pomaga.

Nie mam delphi pod ręką więc nie podam konkretnych przykładów, ale przechodziłem przez to samo - tam gdzie trudno było zmienić logikę programu tak by działała zgodnie z unikodem przerobić można wszystkie typy: String->AnsiString, PChar->PAnsiChar.

Dodatkowo należy uważać przy przerabianiu rzutowania PChar(ZmiennaTypuString) - nie PAnsiChar(ZmiennaTypuString) tylko PAnsiChar(AnsiString(ZmiennaTypuString)).

Wiem, że to niezbyt eleganckie rozwiązania ale przy konwersji dużego projektu na D2009 łatwiej chyba doprowadzić najpierw projekt do poprawnego działania a potem optymalizować te "brzydkie" fragmenty. Choć nie zawsze taka optymalizacja jest możliwa - zwłaszcza gdy kod współpracuje z dllką, która nie jest kompatybilna z unikodem, wymaga buforów jednobajtowych i w kodzie Delphi trzeba na takich operować wykonując różne dziwne operacje.
Piotr M.

Piotr M. programista

Temat: Problem z D2009 (?)

Tomasz Hutnik:
W Delphi 2009 String=UnicodeString. Oznacza to że jeden znak zajmuje teraz DWA bajty. Jest bardzo dużo oprogramowania które zakłada że jeden znak = jeden bajt. Jak radzicie sobie z tym problemem ?
Ja próbowałem zamienić wszystkie wystąpienia PCHAR na PBYTE ale to niestety nie pomaga.

Zacząłbym od tego http://www.embarcadero.com/resources/technical_papers/...
- w miarę przystępnie wyjaśnione wszystko co trzeba wiedzieć w temacie.
Dariusz Jurojć

Dariusz Jurojć Kierownik działu
rozwoju
oprogramowania/proje
ktant/progra...

Temat: Problem z D2009 (?)

Piotr F.:
Tomasz Hutnik:
W Delphi 2009 String=UnicodeString. Oznacza to że jeden znak zajmuje teraz DWA bajty. Jest bardzo dużo oprogramowania które zakłada że jeden znak = jeden bajt. Jak radzicie sobie z tym problemem ?
Ja próbowałem zamienić wszystkie wystąpienia PCHAR na PBYTE ale to niestety nie pomaga.

Zacząłbym od tego http://www.embarcadero.com/resources/technical_papers/...
- w miarę przystępnie wyjaśnione wszystko co trzeba wiedzieć w temacie.

404 mi nie pomogło (a też chętnie zgłębię ten temat) :) Plik o takiej samej nazwie znalazłem pod adresem http://www.codegear.com/article/38548/images/38548/Del....

Na marginesie - i tak gorszy numer Embarcadero zrobiło z pakietem Indy w D2009.

konto usunięte

Temat: Problem z D2009 (?)

Char to WideChar? Widzę że chłopaki pojechali po bandzie.
Ciężko będzie przerabiać 400 tys. linii kodu szukając każdego Char który powinien być 1-bajtowy.
Trudno sobie wyobrazić gorszą formę wprowadzenia Unicode'a.
I nie ma na to opcji kompilatora?Piotr Likus edytował(a) ten post dnia 10.08.09 o godzinie 09:23
Dariusz Jurojć

Dariusz Jurojć Kierownik działu
rozwoju
oprogramowania/proje
ktant/progra...

Temat: Problem z D2009 (?)

Piotr Likus:
Char to WideChar? Widzę że chłopaki pojechali po bandzie.
Ciężko będzie przerabiać 400 tys. linii kodu szukając każdego Char który powinien być 1-bajtowy.
Trudno sobie wyobrazić gorszą formę wprowadzenia Unicode'a.
I nie ma na to opcji kompilatora?Piotr Likus edytował(a) ten post dnia 10.08.09 o godzinie 09:23

Nie ma - niestety.

konto usunięte

Temat: Problem z D2009 (?)

Piotr Likus:
I nie ma na to opcji kompilatora?

Nie ma - niestety.

No właśnie tego się obawiałem ... już próbowałem pozamieniać (replace w tekście) chary i stringi (nie mylić ze stringami :-) ) Nawet udało mi się doprowadzić do poprawności kodu (skompilowało się) ale po uruchomieniu oczywiście padło.
I zgadzam się że sposób wprowadzenia unicode do D2009 jest jangorszy z możliwych.

pozdrawiam i dziękuję za porady.
Piotr M.

Piotr M. programista

Temat: Problem z D2009 (?)

Nie poddawajcie się. Gra jest warta świeczki ;)
Dariusz Jurojć

Dariusz Jurojć Kierownik działu
rozwoju
oprogramowania/proje
ktant/progra...

Temat: Problem z D2009 (?)

Piotr F.:
Nie poddawajcie się. Gra jest warta świeczki ;)

Coraz bardziej w to wątpię, ponieważ wychodzi coraz więcej problemów, np. z niedokończonym Indy.
Mariusz Bułkowski

Mariusz Bułkowski W tajnej służbie Jej
Królewskiej Mości

Temat: Problem z D2009 (?)

A że tak spytam z ciekawości, jest jakieś racjonalne uzasadnienie przerabiania projektu na nowe delphi ? Bo może nie warto ruszać projektu jeżeli nie korzysta sie z nowych bajerów jakie oferuje nowa wersja.
Piotr M.

Piotr M. programista

Temat: Problem z D2009 (?)

Uzasadnienie jest takie, że jak nie będziemy kupować nowych wersji i z nich korzystać to Delphi umrze śmiercią naturalną ;)

konto usunięte

Temat: Problem z D2009 (?)

Piotr F.:
Uzasadnienie jest takie, [...]

Cool :-/
Planowałem przejście na D2009 teraz na pewno tego nie zrobię.
Mariusz Bułkowski

Mariusz Bułkowski W tajnej służbie Jej
Królewskiej Mości

Temat: Problem z D2009 (?)

Ja kupuje nowszą wersję oprogramowania jeżeli jest mi potrzebne coś czego nie ma w starej wersji.
Nie kupuje przecież dlatego aby borland/codegear nie umarł z głodu.
Wiec jak nie potrzebujesz unicode to nie warto przechodzić na 2009.
Koniec końców klient będzie musiał za to zapłacić.
Dla mnie akurat nowa wersja niesie masę nowych udogodnień których np. w delphi 5 nie miałem. I moim skromnym zdaniem warto.

Oczywiście wszystko da sie zrobić w delphi 5 nawet obsługę unicode
ale czy nie lepiej zapłacić 300 euro za aktualizację ? I mieć łatwiejsze życie ?

Co do przeniesienia aplikacji do 2009 to ja jakoś nie widzę w tym problemu, co prawda trochę to pracy wymaga i jak trzeba zrobić to sie zrobi. Wielkiej filozofii w tym nie ma wlasciwie wszystko jest opisane w dokumecie do którego link podał "Piotr Front"
Jakiegoś super automatu raczej nie da sie zrobić, co prawda wraz z ilościa poprawionego kodu szybkośc naprawiana wzrasta , zresztą zalezy jak kod napisany. Jak ktoś nagminnie stosował pchar do tablicy bajtów to rzeczywiście może być problem.

Zawsze można poszukać kogoś kto może to zrobić ;)
Dariusz Jurojć

Dariusz Jurojć Kierownik działu
rozwoju
oprogramowania/proje
ktant/progra...

Temat: Problem z D2009 (?)

Dla mnie nie była problemem konieczność przejścia na Unikod (bo o tym wiedzieliśmy decydując się na upgrade), przykrą niespodzianką za to było dołączenie do tej wersji kompletnie nieskończonej i niekompatybilnej z D2009 wersji Indy, z mocno ograniczoną funkcjonalnością.Dariusz Jurojć edytował(a) ten post dnia 21.08.09 o godzinie 20:33
Borysław B.

Borysław B. Mgr inżynier
informatyki,
właściciel Matrix
Reliability

Temat: Problem z D2009 (?)

Powiedzcie mi tak szczerze - czy tak trudno było dodać do Delphi 2009 stary kompilator (opcjonalnie), żeby każdy kompilował sobie z Unicode lub bez niego? Każdy miałby najlepsze i najnowocześniejsze środowisko programistyczne a równocześnie kompilator tej wersji języka, która mu odpowiada. Ja bym tak zrobił z Delphi 2009 jakbym miał w CodeGear coś do powiedzenia. Ale może źle myślę? Jak to jest?
Tomasz Kaczanowski

Tomasz Kaczanowski Ot, programista

Temat: Problem z D2009 (?)

Borysław Bobulski:
Powiedzcie mi tak szczerze - czy tak trudno było dodać do Delphi 2009 stary kompilator (opcjonalnie), żeby każdy kompilował sobie z Unicode lub bez niego? Każdy miałby najlepsze i najnowocześniejsze środowisko programistyczne a równocześnie kompilator tej wersji języka, która mu odpowiada. Ja bym tak zrobił z Delphi 2009 jakbym miał w CodeGear coś do powiedzenia. Ale może źle myślę? Jak to jest?

Można było stworzyć nowy typ i nie byłoby żadnego problemu... Ale tu brakło pomyślunku.
Piotr M.

Piotr M. programista

Temat: Problem z D2009 (?)

Borysław Bobulski:
Powiedzcie mi tak szczerze - czy tak trudno było dodać do Delphi 2009 stary kompilator (opcjonalnie), żeby każdy kompilował sobie z Unicode lub bez niego? Każdy miałby najlepsze i najnowocześniejsze środowisko programistyczne a równocześnie kompilator tej wersji języka, która mu odpowiada. Ja bym tak zrobił z Delphi 2009 jakbym miał w CodeGear coś do powiedzenia. Ale może źle myślę? Jak to jest?

Tak szczerze - to jesteśmy tutaj wszyscy za "cieńcy", żeby roztrząsać tego typu kwestie. Oczywiście, mimo to możemy się mądrzyć i wysuwać różne teorie we własnym zakresie. Tomasz pisze wyżej o nowym typie... no tak, nie byłoby żadnego problemu - "stare" aplikacje, gdzie unikod jest zbędny, kompilowały by się od kopa, a działały jeszcze lepiej. Ale co dalej? Co z nowymi projektami, albo tymi, w których jednak ten unikod chcemy? Gdzie krok do przodu, skoro masz nowe środowisko i to nie za friko, a możesz dalej klepać badziewny kod kompatybilny z Delphi sprzed 5-10 lat? Czy aby na pewno wszyscy rzeczywiście potrzebują Delphi 2009 lub nowsze? Nie za bardzo rozumiem skąd to całe rozgoryczenie.Piotr F. edytował(a) ten post dnia 17.10.09 o godzinie 12:06
Tomasz Kaczanowski

Tomasz Kaczanowski Ot, programista

Temat: Problem z D2009 (?)

Piotr F.:
Borysław Bobulski:
Powiedzcie mi tak szczerze - czy tak trudno było dodać do Delphi 2009 stary kompilator (opcjonalnie), żeby każdy kompilował sobie z Unicode lub bez niego? Każdy miałby najlepsze i najnowocześniejsze środowisko programistyczne a równocześnie kompilator tej wersji języka, która mu odpowiada. Ja bym tak zrobił z Delphi 2009 jakbym miał w CodeGear coś do powiedzenia. Ale może źle myślę? Jak to jest?

Tak szczerze - to jesteśmy tutaj wszyscy za "cieńcy", żeby roztrząsać tego typu kwestie. Oczywiście, mimo to możemy się mądrzyć i wysuwać różne teorie we własnym zakresie. Tomasz pisze wyżej o nowym typie... no tak, nie byłoby żadnego problemu - "stare" aplikacje, gdzie unikod jest zbędny, kompilowały by się od kopa, a działały jeszcze lepiej. Ale co dalej? Co z nowymi projektami, albo tymi, w których jednak ten unikod chcemy? Gdzie krok do przodu, skoro masz nowe środowisko i to nie za friko, a możesz dalej klepać badziewny kod kompatybilny z Delphi sprzed 5-10 lat? Czy aby na pewno wszyscy rzeczywiście potrzebują Delphi 2009 lub nowsze? Nie za bardzo rozumiem skąd to całe rozgoryczenie

Zrozum. Są firmy (na prawdę), gdzie najstarsze moduły pamiętają jeszcze lata 80-te. Maja ze 30 lat. Ich twórcy dawno nie pracują już w firmie. A skoro nie ma pewności, że po zmianie właściwości typu będą działać dalej, a więc projekt trzeba przeanalizować i przepisać, to czy nie taniej wyjdzie napisać go w innym języku?
Piotr M.

Piotr M. programista

Temat: Problem z D2009 (?)

Tomasz Kaczanowski:
Piotr F.:
Czy aby na pewno wszyscy rzeczywiście potrzebują Delphi 2009 lub nowsze? Nie za bardzo rozumiem skąd to całe rozgoryczenie

Zrozum. Są firmy (na prawdę), gdzie najstarsze moduły pamiętają jeszcze lata 80-te. Maja ze 30 lat.

W porządku. Tu nie ma co rozumieć. Sprawa jest prosta jak konstrukcja cepa, a że rozpatrujemy całą sytuację przez przypadek 1 na 1000 to już inna para kaloszy. Przeczytaj jeszcze raz moje ostatnie pytanie. Narzekacie wszyscy na ten unikod i sposób jego wprowadzenia, ale jakoś nie mogę się doszukać w Waszych wypowiedziach do czego Wam te nowe Delphi właściwie potrzebne. Tak, wiem, pojawiło się trochę nowych ficzerów, ale do tej pory ich nie było i jakoś sobie człowiek radził.
Tomasz Kaczanowski

Tomasz Kaczanowski Ot, programista

Temat: Problem z D2009 (?)

Piotr F.:
Tomasz Kaczanowski:
Piotr F.:
Czy aby na pewno wszyscy rzeczywiście potrzebują Delphi 2009 lub nowsze? Nie za bardzo rozumiem skąd to całe rozgoryczenie

Zrozum. Są firmy (na prawdę), gdzie najstarsze moduły pamiętają jeszcze lata 80-te. Maja ze 30 lat.

W porządku. Tu nie ma co rozumieć. Sprawa jest prosta jak konstrukcja cepa, a że rozpatrujemy całą sytuację przez przypadek 1 na 1000 to już inna para kaloszy. Przeczytaj jeszcze raz moje ostatnie pytanie. Narzekacie wszyscy na ten unikod i sposób jego wprowadzenia, ale jakoś nie mogę się doszukać w Waszych wypowiedziach do czego Wam te nowe Delphi właściwie potrzebne. Tak, wiem, pojawiło się trochę nowych ficzerów, ale do tej pory ich nie było i jakoś sobie człowiek radził.


Ja pokazuję jedynie, że właśnie nie zostanie kupione nowe. Na razie zostało dokupiona licencja starego, a nowe projekty już w C i C++....

Następna dyskusja:

problem z odczytem pliku XML




Wyślij zaproszenie do