Thread View: pl.comp.lang.pascal
10 messages
10 total messages
Started by fatrix
Mon, 29 Oct 2007 10:11
Turbo Pascal i znaki polskie
Author: fatrix
Date: Mon, 29 Oct 2007 10:11
Date: Mon, 29 Oct 2007 10:11
11 lines
1187 bytes
1187 bytes
Witam, Piszę sobie porgramik, gdzie m. in. porównuję poszczególne znaki z pliku txt z tekstem wprowadzonym z palca i znak np ś w pliku nie jest tak samo traktowany jak ś z palca. Czy da się jakoś przyrównać 2 znaki diakrytyczne w prosty sposób? Pozdrawiam fatrix
Re: Turbo Pascal i znaki polskie
Author: webmajsterek
Date: Mon, 29 Oct 2007 11:53
Date: Mon, 29 Oct 2007 11:53
86 lines
2953 bytes
2953 bytes
> Witam,
>
> Piszę sobie porgramik, gdzie m. in. porównuję poszczególne znaki z pliku txt
> z tekstem wprowadzonym z palca i znak np ś w pliku nie jest tak samo
> traktowany jak ś z palca.
>
> Czy da się jakoś przyrównać 2 znaki diakrytyczne w prosty sposób?
>
>
> Pozdrawiam
> fatrix
>
>
program Project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ add your units here };
const znaki:array[0..13] of char=(
{ą:=}#0,{ć:=}#0,{ę:=}#0,{ó:=}#0,{ś:=}#0,{ż:=}#0,{ź:=}#0,
{ĄĆĘÓŚŻŹ}#0,#0,#0,#0,#0,#0,#0);
// tu podajes z kody swoich znakow
var c:array[0..13] of char;
procedure InitChar;
var i:byte;
f:file of char;
begin
AssignFile(F,'d:\znaki.txt');
// plik zawira kolejno ąćęóśżźĄĆĘÓŚŻŹ
// stworony w notaniku windowsa
Reset(F);
For i:=0 to 13 do Read(F,C[i]);
Writeln('----- kody znakow ---');
Writeln('ą:=',ord(C[0]));
Writeln('ć:=',ord(C[1]));
Writeln('ę:=',ord(C[2]));
Writeln('ó:=',ord(C[3]));
Writeln('s:=',ord(C[4]));
Writeln('ż:=',ord(C[5]));
Writeln('ź:=',ord(C[6]));
Writeln('Ą:=',ord(C[7]));
Writeln('Ć:=',ord(C[8]));
Writeln('Ę:=',ord(C[9]));
Writeln('Ó:=',ord(C[10]));
Writeln('S:=',ord(C[11]));
Writeln('Ż:=',ord(C[12]));
Writeln('Ź:=',ord(C[13]));
close(F);
end;
procedure Zamien(S:Ansistring);
var Loop,i:Longint;
begin
For Loop:=1 to Length(S) do
for i:=0 to 14 do If S[Loop]=c[i] then begin
S[Loop]:=znaki[i];
break;
//mozna znki posortowac od najczesciej wysepujacych
//wtdy zamiana bedzie ciut szybsza
end;
end;
begin
InitChar;
readln;
end.
---------------------
http://www.pckurier.pl/archiwum/artykuly/jankowski_bronislaw/litpol/litpol.pas.a
sp
http://www.pckurier.pl/archiwum/artykuly/jankowski_bronislaw/litpol/
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Re: Turbo Pascal i znaki polskie
Author: Fatrix
Date: Wed, 31 Oct 2007 18:10
Date: Wed, 31 Oct 2007 18:10
2 lines
1114 bytes
1114 bytes
Hmm, a co mam zrobić jak zarówno w CP1250 jak i pod notatnikiem pojawiają się 2 różne znaki o takim samym kodzie?
Re: Turbo Pascal i znaki polskie
Author: Terrmit
Date: Fri, 02 Nov 2007 11:55
Date: Fri, 02 Nov 2007 11:55
7 lines
1256 bytes
1256 bytes
Fatrix napisał(a): > Hmm, a co mam zrobić jak zarówno w CP1250 jak i pod notatnikiem > pojawiają się 2 różne znaki o takim samym kodzie? > Ten sam znak może być wyświetlany dla dwóch różnych kodów, ale jeden kod nie może wyświetlać dwóch różnych znaków. Coś mieszasz.
Re: Turbo Pascal i znaki polskie
Author: fatrix
Date: Fri, 02 Nov 2007 17:30
Date: Fri, 02 Nov 2007 17:30
26 lines
1731 bytes
1731 bytes
Użytkownik "Terrmit" <terrmitv@poczta.onet.pl> napisał w > Ten sam znak może być wyświetlany dla dwóch różnych kodów, > ale jeden kod nie może wyświetlać dwóch różnych znaków. > Coś mieszasz. Tak, sorki. Dla PL znaków mam takie kody: 169,162,165,152,136,190,171,134,228,168,224,164 151,157,189,141,143,227 i 234,243,185,156,179,191,159,230,241,202,211,165 140,163,175,143,198,209 kody odpowiednio ze znaków wpisanych w notatniku/z klawiatury w programie. Problem mam ze znakiem "Ą" - dla wszystkich innych wszytsko działa jak trzeba - sprawdzałem. I nie mam pomysłu na rozwiązanie tego problemu. Czy ktoś pomoże?
Re: Turbo Pascal i znaki polskie
Author: Terrmit
Date: Sat, 03 Nov 2007 00:02
Date: Sat, 03 Nov 2007 00:02
22 lines
1631 bytes
1631 bytes
fatrix napisał(a): > Tak, sorki. > > Dla PL znaków mam takie kody: > 169,162,165,152,136,190,171,134,228,168,224,164 > 151,157,189,141,143,227 > > i > > 234,243,185,156,179,191,159,230,241,202,211,165 > 140,163,175,143,198,209 > > kody odpowiednio ze znaków wpisanych w notatniku/z klawiatury w programie. > > Problem mam ze znakiem "Ą" - dla wszystkich innych wszytsko działa jak > trzeba - sprawdzałem. > > I nie mam pomysłu na rozwiązanie tego problemu. > > Czy ktoś pomoże? > http://pl.wikipedia.org/wiki/Spos%C3%B3b_kodowania_polskich_znak%C3%B3w
Re: Turbo Pascal i znaki polskie
Author: Jerzy Michniewski
Date: Mon, 05 Nov 2007 17:03
Date: Mon, 05 Nov 2007 17:03
32 lines
1876 bytes
1876 bytes
On Sat, 03 Nov 2007 01:02:22 +0100, Terrmit wrote: >fatrix napisał(a): >> Tak, sorki. >> >> Dla PL znaków mam takie kody: >> 169,162,165,152,136,190,171,134,228,168,224,164 >> 151,157,189,141,143,227 >> >> i >> >> 234,243,185,156,179,191,159,230,241,202,211,165 >> 140,163,175,143,198,209 >> >> kody odpowiednio ze znaków wpisanych w notatniku/z klawiatury w programie. >> >> Problem mam ze znakiem "Ą" - dla wszystkich innych wszytsko działa jak >> trzeba - sprawdzałem. >> >> I nie mam pomysłu na rozwiązanie tego problemu. >> >> Czy ktoś pomoże? >> >http://pl.wikipedia.org/wiki/Spos%C3%B3b_kodowania_polskich_znak%C3%B3w Wychodzi po prostu głupota windy. TP działa w oknie DOS, a tu stroną kodową jest Latin2, czyli CP852, a w środowisku graficznym gdzie działa np. notatnik bowiązuje CP1250. To powinno wszystko wyjaśnić. J.M. Jerzy Michniewski
Re: Turbo Pascal i znaki polskie
Author: fatrix
Date: Mon, 05 Nov 2007 18:37
Date: Mon, 05 Nov 2007 18:37
11 lines
1619 bytes
1619 bytes
Użytkownik "Jerzy Michniewski" <michniewski_j@kielce.home.pl> napisał > Wychodzi po prostu głupota windy. TP działa w oknie > DOS, a tu stroną kodową > jest Latin2, czyli CP852, a w środowisku graficznym > gdzie działa np. notatnik > bowiązuje CP1250. To powinno wszystko wyjaśnić. Nic mi to nie daje - ile razy próbuję z różnymi kodowaniami to zawsze nie działa jedna literka:(((
Re: Turbo Pascal i znaki polskie
Author: Tomasz Minkiewicz
Date: Tue, 06 Nov 2007 14:51
Date: Tue, 06 Nov 2007 14:51
24 lines
1903 bytes
1903 bytes
On Mon, 5 November 2007 19:37 *fatrix* (fatrix@poczta.neostrada.pl)
wrote in <fgno6v$ff4$1@nemesis.news.tpi.pl>:
>
> Użytkownik "Jerzy Michniewski" <michniewski_j@kielce.home.pl> napisał
>
>> Wychodzi po prostu głupota windy. TP działa w oknie
>> DOS, a tu stroną kodową
>> jest Latin2, czyli CP852, a w środowisku graficznym
>> gdzie działa np. notatnik
>> bowiązuje CP1250. To powinno wszystko wyjaśnić.
>
> Nic mi to nie daje - ile razy próbuję z różnymi kodowaniami to zawsze nie
> działa jedna literka:(((
A jak zrobisz w konsoli
type plik-z-polskimi-znakami.txt
to wszystkie pliterki wyświetlają się poprawnie?
W czym tworzysz ten plik? W Notatniku lub innym GUIowym edytorze?
Może weź go po prostu pokaż, bo tak to trudno się domyślać.
--
Tomasz.Minkiewicz@interia.pl
Re: Turbo Pascal i znaki polskie
Author: fatrix
Date: Tue, 06 Nov 2007 19:16
Date: Tue, 06 Nov 2007 19:16
50 lines
2432 bytes
2432 bytes
Użytkownik "Tomasz Minkiewicz" <Tomasz.Minkiewicz@interia.pl> napisał
> W czym tworzysz ten plik? W Notatniku?
Plik txt tak, a potem już w okienku konsoli podawany jest ciąg do
odnalezienia
> Może weź go po prostu pokaż, bo tak to trudno się
> domyślać.
Mam coś takiego:
...
const
tab1:array[1..18] of
char=(#164,#143,#168,#157,#227,#224,#151,#141,#189,#165,#134,#169,#136,#228,#162,#152,#171,#190);
tab2:array[1..18] of
char=(#165,#198,#202,#163,#209,#211,#140,#143,#175,#185,#230,#234,#179,#241,#243,#156,#159,#191);
....
while not (eof(plik)) do
begin
j:=1;
readln(plik, linia);
dlugosczdania:=length(linia);
repeat
for k:=1 to 18 do
if (linia[j]=tab2[k]) then linia[j]:=tab1[k];
if szukane[i]=linia[j] then
begin
inc(i);
inc(j);
if i>dlugoscszukana then
begin
inc(ile);
i:=1;
end;
end
else
begin
inc(j);
i:=1;
end;
until j>dlugosczdania;
end;
....
Pozdrawiam
fatrix
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads