Goto page 1, 2 Next
Jakub Rakus
Guest
Wed Nov 13, 2013 11:29 pm
Ktoś tu się kiedyś chwalił że ogarnia FreePascala i IDE Lazarusa, więc
przedstawię problem. Mam taki kod:
StringGrid1.Cells[1,i]:=Format('%s', [osobniki[i].genotyp]);
który oczywiście nie działa, komórki w kolumnie numer 1 w moim
StringGrid1 wyświetlają się puste. Pole genotyp w strukturze osobniki
jest typu string o stałej długości 8 znaków. Co ciekawe gdy odwołam się
do pojedynczego znaku ze stringa, np. tak:
StringGrid1.Cells[1,i]:=Format('%s', [osobniki[i].genotyp[1]]);
to wtedy ten pojedynczy znak mi się wyświetla. Dlaczego nie mogę
wyświetlić stringa w całości?
--
Pozdrawiam
Jakub Rakus
Marek
Guest
Thu Nov 14, 2013 7:51 am
Użytkownik "Jakub Rakus" <szczur01@op.pl> napisał w wiadomości news:l60ugq$r79$1@node2.news.atman.pl...
Quote:
Ktoś tu się kiedyś chwalił że ogarnia FreePascala i IDE Lazarusa, więc przedstawię problem. Mam taki kod:
StringGrid1.Cells[1,i]:=Format('%s', [osobniki[i].genotyp]);
który oczywiście nie działa, komórki w kolumnie numer 1 w moim StringGrid1 wyświetlają się puste.
Zakładając, że właściwie indeksujesz "i", to kod wygląda na poprawny. Przynajmniej w Delphi na pewno
by zadziałało.
Może podaj deklarację tablicy "osobniki" oraz strukturę jej elementów (rekordu).
--
Pzdr.
Marek
JK
Guest
Thu Nov 14, 2013 5:21 pm
W dniu 2013-11-13 23:29, Jakub Rakus pisze:
Quote:
Ktoś tu się kiedyś chwalił że ogarnia FreePascala i IDE Lazarusa, więc
przedstawię problem. Mam taki kod:
StringGrid1.Cells[1,i]:=Format('%s', [osobniki[i].genotyp]);
który oczywiście nie działa, komórki w kolumnie numer 1 w moim
StringGrid1 wyświetlają się puste. Pole genotyp w strukturze osobniki
jest typu string o stałej długości 8 znaków. Co ciekawe gdy odwołam się
do pojedynczego znaku ze stringa, np. tak:
StringGrid1.Cells[1,i]:=Format('%s', [osobniki[i].genotyp[1]]);
to wtedy ten pojedynczy znak mi się wyświetla. Dlaczego nie mogę
wyświetlić stringa w całości?
1. Nie bardzo rozumiem w jakim celu używasz Format do stringa. W takim
przypadku Format robi po prostu kopię stringa.
2. Spróbuj Format('%0:s', [osobniki[i].genotyp])
JK
Jakub Rakus
Guest
Thu Nov 14, 2013 5:48 pm
On 14.11.2013 07:51, Marek wrote:
Quote:
Może podaj deklarację tablicy "osobniki" oraz strukturę jej elementów
(rekordu).
Osobniki to tablica elementów stworzonego przeze mnie typu:
type fenotyp = record
numer: byte;
genotyp: string[8];
fun_przyst: integer;
wyc_kola_rul: real;
end;
--
Pozdrawiam
Jakub Rakus
Jakub Rakus
Guest
Thu Nov 14, 2013 5:55 pm
On 14.11.2013 17:21, JK wrote:
Quote:
1. Nie bardzo rozumiem w jakim celu używasz Format do stringa. W takim
przypadku Format robi po prostu kopię stringa.
Chcę mieć (później) możliwość formatowania tego co będzie pokazywane na
ekranie. Zresztą zwykłe przypisanie też nie działa.
Quote:
2. Spróbuj Format('%0:s', [osobniki[i].genotyp])
JK
Próbowałem, niestety efektów brak.
--
Pozdrawiam
Jakub Rakus
John Smith
Guest
Thu Nov 14, 2013 7:05 pm
On 14-11-2013 17:55, Jakub Rakus wrote:
Quote:
On 14.11.2013 17:21, JK wrote:
1. Nie bardzo rozumiem w jakim celu używasz Format do stringa. W takim
przypadku Format robi po prostu kopię stringa.
Chcę mieć (później) możliwość formatowania tego co będzie pokazywane na
ekranie. Zresztą zwykłe przypisanie też nie działa.
2. Spróbuj Format('%0:s', [osobniki[i].genotyp])
JK
Próbowałem, niestety efektów brak.
Bo nie zadziała, w Delphi też nie.
Aby wyświetlić zawartość StringGrid, musisz przechwycić event: OnDrawCell
K.
Jakub Rakus
Guest
Thu Nov 14, 2013 8:10 pm
On 14.11.2013 19:05, John Smith wrote:
Quote:
Bo nie zadziała, w Delphi też nie.
Aby wyświetlić zawartość StringGrid, musisz przechwycić event: OnDrawCell
K.
Chyba się nie zrozumieliśmy, ja nie chce wyciągać tego co jest w komórce
StringGrida tylko chcę do niej wpisać jakieś tam stringa. Co idealnie
działa gdy robię np. tak:
StringGrid.Cells(x,y):='jakiś tekst'
albo tak:
my_string:='jakiś tekst';
StringGrid.Cells(x,y):=my_string;
ale NIE DZIAŁA jak chcę do tej komórki wrzucić jedno z pól typu
złożonego, przy czym to jedno konkretne pole jest typu string.
--
Pozdrawiam
Jakub Rakus
Guest
Fri Nov 15, 2013 12:01 am
W dniu czwartek, 14 listopada 2013 17:55:09 UTC+1 użytkownik Jakub Rakus napisał:
Quote:
On 14.11.2013 17:21, JK wrote:
1. Nie bardzo rozumiem w jakim celu używasz Format do stringa. W takim
przypadku Format robi po prostu kopię stringa.
Chcę mieć (później) możliwość formatowania tego co będzie pokazywane na
ekranie. Zresztą zwykłe przypisanie też nie działa.
2. Spróbuj Format('%0:s', [osobniki[i].genotyp])
JK
Próbowałem, niestety efektów brak.
Ja też próbowałem. I działa.
Sprawdź czy aby na pewno poprawnie zapisujesz dane do tablicy, tzn. czy pod indeksem i są jakiekolwiek dane.
JK
John Smith
Guest
Fri Nov 15, 2013 2:10 am
On 14-11-2013 20:10, Jakub Rakus wrote:
Quote:
On 14.11.2013 19:05, John Smith wrote:
Bo nie zadziała, w Delphi też nie.
Aby wyświetlić zawartość StringGrid, musisz przechwycić event: OnDrawCell
K.
Chyba się nie zrozumieliśmy, ja nie chce wyciągać tego co jest w komórce
StringGrida tylko chcę do niej wpisać jakieś tam stringa. Co idealnie
działa gdy robię np. tak:
StringGrid.Cells(x,y):='jakiś tekst'
albo tak:
my_string:='jakiś tekst';
StringGrid.Cells(x,y):=my_string;
ale NIE DZIAŁA jak chcę do tej komórki wrzucić jedno z pól typu
złożonego, przy czym to jedno konkretne pole jest typu string.
Napisz jakiś _bardzo_krótki_ program i wyślij go na grupę. Może problem
leży w braku przydzielonej pamięci? Przypomnę, że StringGrid.Cells(x,y)
z konkretnym x i y, musi wcześniej istnieć, ustawiając np:
StringGrid1.ColCount
StringGrid1.RowCount
K.
Marek
Guest
Fri Nov 15, 2013 7:33 am
Użytkownik "John Smith" <dam9723@buziaczek.pl> napisał w wiadomości news:l633dm$jvn$1@node1.news.atman.pl...
Quote:
On 14-11-2013 17:55, Jakub Rakus wrote:
On 14.11.2013 17:21, JK wrote:
1. Nie bardzo rozumiem w jakim celu używasz Format do stringa. W takim
przypadku Format robi po prostu kopię stringa.
Chcę mieć (później) możliwość formatowania tego co będzie pokazywane na
ekranie. Zresztą zwykłe przypisanie też nie działa.
2. Spróbuj Format('%0:s', [osobniki[i].genotyp])
JK
Próbowałem, niestety efektów brak.
Bo nie zadziała, w Delphi też nie.
Bzdura.
Quote:
Aby wyświetlić zawartość StringGrid, musisz przechwycić event: OnDrawCell
Kolejna bzdura.
--
Pzdr.
Marek
Marek
Guest
Fri Nov 15, 2013 10:25 am
Użytkownik "Jakub Rakus" <szczur01@op.pl> napisał w wiadomości news:l62utl$pit$1@node2.news.atman.pl...
Quote:
On 14.11.2013 07:51, Marek wrote:
Może podaj deklarację tablicy "osobniki" oraz strukturę jej elementów
(rekordu).
Osobniki to tablica elementów stworzonego przeze mnie typu:
type fenotyp = record
numer: byte;
genotyp: string[8];
fun_przyst: integer;
wyc_kola_rul: real;
end;
A czy temu string-owi "genotyp" jest przypisywany tekst zawierający polskie znaki (z ogonkami, kreseczkami)?
Jeśli nie, to jeśli np. będzie 'abcdefg', to też nie działa?
--
Pzdr.
Marek
Jakub Rakus
Guest
Fri Nov 15, 2013 7:45 pm
On 15.11.2013 02:10, John Smith wrote:
Quote:
Napisz jakiś _bardzo_krótki_ program i wyślij go na grupę. Może problem
leży w braku przydzielonej pamięci? Przypomnę, że StringGrid.Cells(x,y)
z konkretnym x i y, musi wcześniej istnieć, ustawiając np:
StringGrid1.ColCount
StringGrid1.RowCount
K.
procedure TForm1.Button1Click(Sender: TObject);populacji początkowej
var
i: integer;
begin
ilosc_osobnikow:=SpinEdit1.Value;
StringGrid1.Clear;
StringGrid1.RowCount:=ilosc_osobnikow+1;
for i:=1 to ilosc_osobnikow do
begin
osobniki[i].numer:=i;
osobniki[i].genotyp:=permutacja(

;
end;
for i:=1 to ilosc_osobnikow do
begin
StringGrid1.Cells[0,i]:=Format('%d', [osobniki[i].numer]);
StringGrid1.Cells[1,i]:=Format('%s', [osobniki[i].genotyp]);
end;
end;
Kolumny stworzone we właściwościach StringGrida, tak żeby miały już
konkretne nazwy, szerokości etc. Zresztą jak wrzuce do kolumny numer 1
jakąś wartość numeryczną to ją widzę.
--
Pozdrawiam
Jakub Rakus
Jakub Rakus
Guest
Fri Nov 15, 2013 7:48 pm
Quote:
Ja też próbowałem. I działa.
Sprawdź czy aby na pewno poprawnie zapisujesz dane do tablicy, tzn. czy pod indeksem i są jakiekolwiek dane.
JK
A kompilujesz to pod windowsem czy linuxem? Może sprawa leży po stronie
konfiguracji środowiska? Wartości osobniki.genotyp na pewno są tworzone
bo w dalszej części programu inne procedury wyliczają na ich podstawie
różne wartości liczbowe i wartości te otrzymuje poprawne (wyświetlam je
w innym StringGridzie).
A teraz ciekawostka: zrobiłem sobie na szybko idiotyczną funkcję, która
wyciąga z mojego stringa kolejne znaki i skleja je w nowego stringa -
wtedy się to wyświetla, o co tu chodzi?
--
Pozdrawiam
Jakub Rakus
John Smith
Guest
Fri Nov 15, 2013 8:27 pm
[...]
Quote:
Bzdura.
[...]
Kolejna bzdura.
Bzdurnyś bzdurnik, albo niedouczony student.
K.
John Smith
Guest
Fri Nov 15, 2013 8:46 pm
Quote:
Kolumny stworzone we właściwościach StringGrida, tak żeby miały już
konkretne nazwy, szerokości etc. Zresztą jak wrzuce do kolumny numer 1
jakąś wartość numeryczną to ją widzę.
Prosiłem o krótki program, ten co przysłałeś pozwoliłem sobie uprościć
do problemu StringGrid:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.StdCtrls,
Vcl.Samples.Spin;
type
TForm1 = class(TForm)
Button1: TButton;
StringGrid1: TStringGrid;
SpinEdit1: TSpinEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
ilosc_osobnikow : integer;
begin
ilosc_osobnikow := SpinEdit1.Value;
//StringGrid1.Clear;
StringGrid1.RowCount:=ilosc_osobnikow+1;
// for i:=1 to ilosc_osobnikow do
// begin
// osobniki[i].numer:=i;
// osobniki[i].genotyp:=permutacja(

;
// end;
for i:=1 to ilosc_osobnikow do
begin
StringGrid1.Cells[0,i]:= 'abc'; //Format('%d', [osobniki[i].numer]);
StringGrid1.Cells[1,i]:= 'def'; //Format('%s', [osobniki[i].genotyp]);
end;
end;
end.
Ta wersja działa zgodnie z oczekiwaniem pod Delphi.
K.
Goto page 1, 2 Next