Jump to page: 1 24  
Page
Thread overview
August 21, 2013
string buf;
while (std.stdio.stdin.readln(buf)){
	writeln(buf);
}

şeklinde kodu yazıp çalıştırıyorum türkçe "ğüş" gibi bir ifade yazınca

"Unhandled exception at 0x76B34B32 (KernelBase.dll) in source.exe: 0xE0440001 (parameters: 0x02031700)."

hatasını veriyor :)

Ali hocam, Salih hocam yardımlarınızı bekliyorum.

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 21, 2013

Alıntı:

>

D programının UTF-8 kodları yazdırdığını biliyoruz. Alan taraf UTF-8 anlıyor mu? Bir başka deyişle: Konsol UTF-8'e ayarlı mı?

Konsol kesinlikle utf8 değil :) ama ne olduğunu bilmiyorum :) utf8 e nasıl çevirebiliriz ki?

O kullanımda bir gariplik görüyorum. readln'ın buf diye parametre alanı o buf'ın üzerine yazar. Dolayısıyla immutable char'lardan oluşan string'in kullanılamıyor olmasını beklerdim. Gerçekten de benim denediğim dmd'de derleme hatası oluyor. string yerine char dilimi dener misin...

Yeni bir d sürümü çıkmış onun üzerinde çalışıyor eski sürümde bende de olmuyordu.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 21, 2013

Windows konsolda soyle bi ciktisi var

core.exception.UnicodeException@src\rt\util\utf.d(290): invalid UTF-8 sequence
----------------
0x00415690 in onUnicodeError
0x00402100 in _Dmain at C:\Users\admin\Desktop\NeOss\NeOss\main.d(35)
0x00410760 in extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int f
unction(char[][])*).void runMain()
0x0041079B in extern (C) int rt.dmain2._d_run_main(int, char**, extern (C) int f
unction(char[][])*).void runAll()
0x00410399 in _d_run_main
0x0040C43C in main
0x77AA8543 in BaseThreadInitThunk
0x77E6AC69 in RtlInitializeExceptionChain
0x77E6AC3C in RtlInitializeExceptionChain

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 21, 2013

buf ı char[] olarak değiştirdim. string[] olunca derleme hatası vermiyor ama writeln(cast(ubyte[]) buf); dediğim zaman da harfleri okuyamıyorum. char[] olunca okuyabiliyorum.

Alıntı:

>

Rhodeus Script (0.0.3p, 21 August 2013)

> > >

üü
[129, 129, 10]

Alıntı:

>

Rhodeus Script (0.0.3p, 21 August 2013)

> > >

ğ
[103, 10]
lodvar g

Error: Variable 'g' is not defined.

> > >

ğüş
[103, 129, 115, 10]
lodvar güs

Error: Variable 'güs' is not defined.

> > >

öçş
[148, 135, 115, 10]

Alıntı:

>

Windows konsoluysa chcp 65001.

Programı direk çalıştırdığım için böyle bir komut giremiyorum :/

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 21, 2013

D programının UTF-8 kodları yazdırdığını biliyoruz. Alan taraf UTF-8 anlıyor mu? Bir başka deyişle: Konsol UTF-8'e ayarlı mı?

O kullanımda bir gariplik görüyorum. readln'ın buf diye parametre alanı o buf'ın üzerine yazar. Dolayısıyla immutable char'lardan oluşan string'in kullanılamıyor olmasını beklerdim. Gerçekten de benim denediğim dmd'de derleme hatası oluyor. string yerine char dilimi dener misin...

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 21, 2013

Windows konsoluysa 'chcp 65001'.

string konusunda yine de bir gariplik var. readln'ın immutable(char) üzerine yazamıyor olması gerek. Ben 'DMD64 D Compiler v2.064-devel-52cc287' ile deniyorum:

import std.stdio;

void main()
{
   string buf;
   while (std.stdio.stdin.readln(buf)){
       writeln(buf);
   }
}

'
Error: template std.stdio.File.readln does not match any function template declaration. Candidates are:
/phobos/std/stdio.d(842): std.stdio.File.readln(S = string)(dchar terminator = '\x0a') if (isSomeString!S)
/phobos/std/stdio.d(932): std.stdio.File.readln(C)(ref C[] buf, dchar terminator = '\x0a') if (isSomeChar!C && is(Unqual!C == C) && !is(C == enum))
/phobos/std/stdio.d(955): std.stdio.File.readln(C, R)(ref C[] buf, R terminator) if (isSomeChar!C && is(Unqual!C == C) && !is(C == enum) && isBidirectionalRange!R && is(typeof(terminator.front == (dchar).init)))
Error: template std.stdio.File.readln(S = string)(dchar terminator = '\x0a') if (isSomeString!S) cannot deduce template function from argument types !()(immutable(dchar)[])
make: *** [deneme] Error 1
'

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 21, 2013

Zekeriya, programın gerçekten UTF-8 okuduğundan emin misin? writeln yerine baytları teker teker yazdırır mısın. Her Türkçe harfe karşılık 2 bayt görmen gerek.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 22, 2013
version(Windows)
{
	import std.c.windows.windows : SetConsoleCP, SetConsoleOutputCP;
	static this()
	{
		SetConsoleCP(65001);
		SetConsoleOutputCP(65001);
	}
}

Bu kodu buldum :) Şu an kodlarda bir hata var test edemiyorum test edince yazarım buraya sonuçları :)

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 22, 2013

Alıntı (zekeriyadurmus):

> > > >

üü
[129, 129, 10]

Evet, onlar UTF-8 kodları değil. ü için 129 tek değerini görüyorsak UTF-8 değil, kod tablosu kullanılıyor demektir.

Alıntı:

>

Programı direk çalıştırdığım için böyle bir komut giremiyorum :/

Program içinden ayarlamak için SetConsoleCP ve SetConsoleOutputCP varmış:

http://msdn.microsoft.com/en-us/library/ms682064.aspx

Google'layınca örnekleri bulunuyor.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 22, 2013

Tekrardan merhabalar!

Son zamanlarda c ve c++ ile uğraşırken ben de aynı sorunları yaşamıştım. Komut satırı yazı tipini Lucida Console yapıp kod olarak da c++ için;

#include <windows.h>
#include <iostream>

using namespace std;

int main()
{
   SetConsoleCP(1254);
   SetConsoleOutputCP(1254);

   cout << "Türkçe Karakterler: ı I İ i ö Ö ü Ü ğ Ğ ç Ç ş Ş" << endl;
   return 0;
}

yazınca benim konsolda hatasız tüm karakterleri bastı. 1254 yerine 65001 kullanınca karakterleri yine hatalı basıyor. 65001 galiba başka bir alanda Türkçe'nin kodu.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

« First   ‹ Prev
1 2 3 4