Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Pascal / Fpc ascii write
#1
Information 
Merhaba,
Lisede ki bilgisayar öğretmenimizin turbo pascal 7 ile yazmış olduğu snake oyunu vardı eski dosyaları karıştırırken buldum turbo pascal 7 16 bit olduğu ve windows 10 da çalışmadığı için freepascal ile compile etim hata vermedi ama çalıştırdığımda karakterler bozuk görünüyordu örnek çerçeve procedurunde ascii karakterleri yanlış geliyordu devpascal kurdum onunla compile etim çalıştırdım karakterler v.s her şey düzgün yılan çok yavaş hareket ediyordu delay değerlerini düşürdüğümde hızlandı normale döndü.

Aşağıdaki kodu windows xp üzerinde turbo pascal 7 ile çalıştırdığımda düzgün, windows 10 devpascal düzgün , windows 10 free pascalda bozuk

write(#187);
olan kısımları
write(chr(187));
olarak ta değiştirdim bir şey değişmedi.
uses crt;
var
i: integer;
s: string;
x1,
x2,
y1,
y2,
renk:integer;
procedure cerceve(x1,x2,y1,y2,renk:integer );(* procedure lerin  bulundugu  yerin  basi *)
var
k,i:integer;
begin
    For i:=y1+1 to y2-1 do begin (*dikey ‡izgilerin  baŸlangc*)
        gotoxy(x1,i);textBackground(renk);textcolor(white);write(#186);
        gotoxy(x2,i);textBackground(renk);textcolor(white);write(#186);
    end;                         (*dikey ‡izgilerin  sonu*)
    for i:=x1 to x2 do  begin (*yatay ‡iz§ilerin  baŸlangc*)
        if i=x1 then begin
           gotoxy(i,y1);textBackground(renk);textcolor(white);write(#201);
           gotoxy(i,y2);textBackground(renk);textcolor(white);write(#200);
            end else begin
            if i=x2 then begin
               gotoxy(i,y1);textBackground(renk);textcolor(white);write(#187);
               gotoxy(i,y2);textBackground(renk);textcolor(white);write(#188);
               end else begin
               gotoxy(i,y1);textBackground(renk);textcolor(white);write(#205);
               gotoxy(i,y2);textBackground(renk);textcolor(white);write(#205);
            end;
        end;
    end; (*yatay ciz§ilerin sonu*)
for i:=y1+1 to y2-1 do  begin(*cercevenin  i‡ini boyar*)
     for k:=x1+1 to x2-1 do  begin
        gotoxy(k,i);textBackground(renk);textcolor(renk);write(#32);
         end;
     end;
end;(* procedure lerin  bulundugu  yerin  sonu*)

begin
clrscr;
x1:=25;x2:=55;y1:=8;y2:=17;renk:=13;
cerceve(x1,x2,y1,y2,renk);
readln;

end.

“Do. Or do not. There is no try.”
Cevapla
#2
şunu farketim
klavyeden Alt + 186 tuşuna basınca ║ işareti geliyor ama Alt + 0186 tuşuna basınca º geliyor bende ki durumda benim istediğim ║ gelmesi.
ilginç olanı
var
i: integer;
s: string;
begin
for i := 0 to 255 do
   begin
   s:='a';
   case (i) of
   32..47,
   58..64,
   91..96,
   123..255 : s:='Ozel : ';
   48..57  : s:='Sayi  : ';
   65..90,97..122: s:='Harf : ';
   end;

    if s<>'' then
    writeln(s,' ',i,' ',chr(i));
   end;

end.
bu kodu çalıştırdığımda i değişkeni 186 olduğunda ekrana ║ yazıyor ama aynı mantıkta yeni dosyada
uses crt;
var
i: Integer;
begin
i:= 186;
writeln(Chr(i));
readln;
end.
kodlarını çalıştırdığımda º sonucunu veriyor. farkı nedir anlamadım.

“Do. Or do not. There is no try.”
Cevapla
#3
Bence Codepage ile alakalı. Deneme şansım yok ama şuraya bakabilir misiniz(Özellikle Console encoding'in değiştirildiği bölüme):
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
There's no place like 127.0.0.1
WWW
Cevapla
#4
Kesin olmamakla birlikte denemelerimde;

ALT + XXX şeklinde vuruş seçili karakter seti (2^8) için , başına sıfır ekleyip ALT + 0XXX şeklinde vuruş unicode (2^16) karakter bastırıyor.

Bunu sağlamalısın.
Ağlarsa kablosuz ağlar, gerisi yerel ağlar...
Cevapla
#5
free pascal da karakterleri Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol sayfasında ki UTF-16 hex değerleri ile
örnek write(#$2551); şeklinde yazdırdığımda oluyor ama bir tuhaf oluyor :Smile solda resimde devpascal ve turbo pascal daki ascii kod ile yazdırdığım sonuç sağda aynı karakterleri free pascal ile utf16-hex değerleri ile yazdırdığım sonuç.
kbR7Py.png

“Do. Or do not. There is no try.”
Cevapla
#6
crt uniti işi karıştırıyor
crt unitini kullanmazsam writeln(chr(186)); çıkış olarak ║ veriyor
uses crt; dediğimde writeln(chr(186)); çıkış olarak º veriyor.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
crt unitinde unicode ile ilgili bir tanım göremedim orada uses windows; var onu inceleyeğim yine de malumatı olan yazarsa müteşekkir olurum.

“Do. Or do not. There is no try.”
Cevapla
#7
(22-04-2017, Saat: 12:48)masteryoda Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Olcrt uniti işi karıştırıyor
crt unitini kullanmazsam writeln(chr(186)); çıkış olarak ║ veriyor
uses crt; dediğimde writeln(chr(186)); çıkış olarak º veriyor.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
crt unitinde unicode ile ilgili bir tanım göremedim orada uses windows; var onu inceleyeğim yine de malumatı olan yazarsa müteşekkir olurum.

program Project1;

{$APPTYPE CONSOLE}

{$R *.res}


uses
  System.SysUtils;

type
  TrString = type Ansistring(775); // codepage de latin-7 olarak geçer


function GetTrString(const Input: array of Byte): TrString;
begin
  SetLength(Result, Length(Input));
  if Length(Result)>0 then
    Move(Input[0], Result[1], Length(Input));
end;

begin
  try
    { TODO -oUser -cConsole Main : Insert code here }
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;


  writeln(GetTrString([186,187]));

end.

Ayrıca codepage listesi; Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
DOS kısmını baz alın
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#8
(22-04-2017, Saat: 13:11)esistem Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlAyrıca codepage listesi;  Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
DOS kısmını baz alın
 Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol sayfasından write(#$2551); şeklinde kullanımda da sonuca ulaşabildim fakat resimde sağda olduğu gibi birşeylerin değiştiği belli sizin örnekteki kodla da write(#$2551); aynı yere çıkıyor.

“Do. Or do not. There is no try.”
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  pascal script ile QuickReport nesnelerine nasıl erişim yapılır theSinan 2 107 04-07-2018, Saat: 11:16
Son Yorum: hi_selamlar
Question Pascal isimlendirme standartları masteryoda 13 1.218 29-01-2017, Saat: 00:27
Son Yorum: kimimben
  Object Pascal - 2 Farklı Fonksiyon Bildirimi İbrahim 1 455 14-01-2017, Saat: 07:25
Son Yorum: Tuğrul HELVACI



Konuyu Okuyanlar: 1 Ziyaretçi