[Delphi 2010] Stringgrid a cyrylica.

0

Witam

Nie mogę uporać się z tym problemem. Mianowicie wczytuje do stringgrid-u tekst w języku rosyjskim i zamiast cyrylicy widzę takie grubsze kreski >> |
Co ciekawe gdy pobieram tekst z grid-u np. do memo wszystko jest ok.
Czy stringgrid nie obsługuje cyrylicy?

Z góry dzięki za pomoc.

0

Czy ten komponent to standardowy StringGrid, czy zmodyfikowany ?
Wczytujesz tekst z pliku txt ? Jakie kodowanie zostało użyte w pliku ?

0

wczytuje plik txt (utf8)
po czym używam: memo6.Text:= UTF8towidestring(memo6.Text); by zamienić utf na unicode
i procedurą dzielącą wpisuje poklei dane do tabeli (wszędzie w tej procedurze używam string)

dodam też że po zmianie charset na rucharset wszystko wyświetla się jak powinno.
stringgrid nie modowany

////
z tego co widzę problem nie może leżeć po stronie procedur dzielących... po dodaniu normalnie tekstu z editu po rusku nadal widzę te |||||

0

Najlepiej wrzuć kodzik, którym wczytujesz ten plik do stringgrida.
W ciemno ciężko coś powiedzieć.

0

To chyba wszystkim znana funkcja parse:

 function Parse(var Str:String;const Delimeter:String):String;
var P:Integer;
begin
  P:=Pos(Delimeter,Str);
  if P>0 then
  begin
    Result:=Copy(Str,1,P-1);
    Delete(Str,1,P+Length(Delimeter)-1);
  end
  else
  begin
    Result:=Str;
    SetLength(Str,0);
  end;
end; 

i do tego w procedurze wpisywania:

var Y,X:Integer;
var Col,Row:String;
Y:=0;
while Length(S)>0 do
begin
  Row:=Parse(S,#13#10);
  Inc(Y);
  X:=0;
  while Length(Row)>0 do
  begin
     Col:=Parse(Row,#9);
     Inc(X);
     //  tu wpisuje tekst do stringgrida cells(x,y):=col;
  end;
end;  
0

U mnie wszystko działa jak powinno.
O to chodziło tak ?

OBRAZEK

0

dziwne u mnie nie działa O_o
porostu wygląda to na błąd w wyświetlaniu a nie w wpisywaniu

wyślesz mi na pm surce z tego?

0

Ależ ja tylko użyłem Twojego kodu :)
Na formie położony defaultowy Memo1 i StringGrid (zmieniłem tylko liczbę kolumn).

procedure TForm1.Button1Click(Sender: TObject);
var 
Y, X : Integer;
Col, Row, s : String;
begin
s := Memo1.Lines.Text;
Y:=0;
while Length(s)>0 do
begin
  Row:=Parse(s,#13);
  Inc(Y);
  X:=0;
  while Length(Row)>0 do
  begin
     Col:=Parse(Row,#9);
     Inc(X);
     StringGrid1.Cells[x,y] := col;
  end;
end;
end;
0

OMG wiesz co było nie tak?:D
Projekt przeniosłem z d7 a tam używana była jakaś śmieszna czcionka...po zmianie na Tahoma wszystko jest ok
co śmieszne w editach jest ta stara czcionka i wszystko działa

tylko czy np. xp ma ta czcionkę?:D żeby nie było niespodzianek

0

No czcionka rzeczywiście powinna zawierać znaki specjalne - jeśli nie ma co wyświetlić to tego nie wyświetli.
Tahoma to standardowa czcionka, nie może nie działać na XP.

1 użytkowników online, w tym zalogowanych: 0, gości: 1