🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#92242
Author: fatrix
Date: Mon, 29 Oct 2007 10:11
11 lines
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
#92243
Author: webmajsterek
Date: Mon, 29 Oct 2007 11:53
86 lines
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
#92244
Author: Fatrix
Date: Wed, 31 Oct 2007 18:10
2 lines
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
#92245
Author: Terrmit
Date: Fri, 02 Nov 2007 11:55
7 lines
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
#92246
Author: fatrix
Date: Fri, 02 Nov 2007 17:30
26 lines
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
#92247
Author: Terrmit
Date: Sat, 03 Nov 2007 00:02
22 lines
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
#92248
Author: Jerzy Michniewski
Date: Mon, 05 Nov 2007 17:03
32 lines
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
#92249
Author: fatrix
Date: Mon, 05 Nov 2007 18:37
11 lines
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
#92250
Author: Tomasz Minkiewicz
Date: Tue, 06 Nov 2007 14:51
24 lines
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
#92251
Author: fatrix
Date: Tue, 06 Nov 2007 19:16
50 lines
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