Ĺadny brzuch
Witam. Mam taka tablice:
Tablica : array[0..4] of string = (('A'),('B'),('C'),('D'));
Moj problem polega na tym ze chce aby kazdy znak wpisany w memo byl porownywany z kazda z wartosci znajdujacych sie w tablicy.
Czyli, jezeli Memo1.Text[I] := Tablica[I] zeby dalo znac.
Wiem ze to bedzie petla, jednak nieumem sobie z tym poradzic.
Mam nadzieje ze dobrze wytlumaczylem, prosze o pomoc ;)
Pozdrawiam
--------------------
GG: 4206396
Tak wytłumaczyłeś że człowiek niczego nie zrozumiał ;).
1. Jeśli chcesz tam przechowywać oddzielne znaki to użyj tablicy charów :).
2. Jesteś pewny że chodzi ci o Memo a nie Edita bo dostęp do linjek w meo wygląda tak memo.lines[numer lini];
3. Napisz dokładnie o co ci chodzi ? :)
-------------- ------------- ------------- --------------- ------
literka M literka K literka S jak eMKaeS lallaalallalalalallalalallallalala
-------------- --------------- ------------- --------------- ----
to będzie jakoś tak:
i := 0; t := 0; //znak, który sprawdzasz w tablicy while i < Lenght(Memo1.Lines.Text) - 1 do begin if memo1.Lines.Text[i] = Tablica[t] then begin //coś tam end; if Memo1.Lines.Text[i] <> Tabliaca[t] then t := t + 1 ; if t = 4 then begin t := 0; i := i + 1; end; end;
Powinno zadziałać :lol:
Const Tablica : array [1..4]of string = ( ('A'),('B'),('C'),('D') ); Var I,T : Integer; Begin I := 0; T := 0; Repeat If Memo1.Lines.Text[I] = Tablica[T] Then Begin ShowMessage('Odnalazlem: ' + Tablica[T]); I := I + 1; End; If Memo1.Lines.Text[I] <> Tablica[T] Then Begin T := T + 1; //ShowMessage(Tablica[T]); End; Until T = High(Tablica); //ShowMessage('koniec'); End;
Mozecie powiedziec mi czemu, jesli program trafi na szukany znak nie wyswietla odpowiedniego komunikatu :?:?:? A wiem ze natrafia ;)
(patrz: komentarze) :D Pewnie znowu robie jakis prosty, glupi blad [:/]
--------------------
GG: 4206396
Szkoda ze niema opcji edycji posta [:/] Juz sobie poradzilem, natomiast niemoge zwolnic tablicy Tablica.Free - niedziala [:/] Wiecie moze czemu :? Wywala blad:
cytat:
[Pascal Error] Unit1.pas(1): Unable to invoke Code Completion due to errors in source code
--------------------
GG: 4206396
Poprawcie mnie, jeśli się mylę, ale chyba typ String nie ma metod. W tym FREE. A to, że tablica - to już inna beczka.
]==][::::::::::::::::::::::::>
:! Nie tykać nawet kijem długim na pięć metrów :!
Poza tym - niech żyją moderatorzy :P
To dosc prawdopodobne (NIE nabijam postów - zapomniałem o tym, co tu piszę), że NIE ma metody Free w Stringu, a to dlatego, że... Ten typ wywodzi się z "rdzenia" Pascala, za to, np. TBitmap to typy, ściślej obiekty, dodane później, a z racji tego, że są obiektami, to mają metody. Można zawsze spróbować szukać jakiejś zewnętrznej funkcji albo procedury "czyszczącej" Stringi. Albo zadeklarowałeś je jako stałe. Pomyśl chwilę nad tym, co napisałem i spróbuj odczytać myśl.
]==][::::::::::::::::::::::::>
:! Nie tykać nawet kijem długim na pięć metrów :!
Poza tym - niech żyją moderatorzy :P
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Tablica : array[0..4] of string = (('A'),('B'),('C'),('D'));
Moj problem polega na tym ze chce aby kazdy znak wpisany w memo byl porownywany z kazda z wartosci znajdujacych sie w tablicy.
Czyli, jezeli Memo1.Text[I] := Tablica[I] zeby dalo znac.
Wiem ze to bedzie petla, jednak nieumem sobie z tym poradzic.
Mam nadzieje ze dobrze wytlumaczylem, prosze o pomoc ;)
Pozdrawiam
--------------------
GG: 4206396
Tak wytłumaczyłeś że człowiek niczego nie zrozumiał ;).
1. Jeśli chcesz tam przechowywać oddzielne znaki to użyj tablicy charów :).
2. Jesteś pewny że chodzi ci o Memo a nie Edita bo dostęp do linjek w meo wygląda tak memo.lines[numer lini];
3. Napisz dokładnie o co ci chodzi ? :)
-------------- ------------- ------------- --------------- ------
literka M literka K literka S jak eMKaeS lallaalallalalalallalalallallalala
-------------- --------------- ------------- --------------- ----
to będzie jakoś tak:
i := 0; t := 0; //znak, który sprawdzasz w tablicy while i < Lenght(Memo1.Lines.Text) - 1 do begin if memo1.Lines.Text[i] = Tablica[t] then begin //coś tam end; if Memo1.Lines.Text[i] <> Tabliaca[t] then t := t + 1 ; if t = 4 then begin t := 0; i := i + 1; end; end;
Powinno zadziałać :lol:
Const Tablica : array [1..4]of string = ( ('A'),('B'),('C'),('D') ); Var I,T : Integer; Begin I := 0; T := 0; Repeat If Memo1.Lines.Text[I] = Tablica[T] Then Begin ShowMessage('Odnalazlem: ' + Tablica[T]); I := I + 1; End; If Memo1.Lines.Text[I] <> Tablica[T] Then Begin T := T + 1; //ShowMessage(Tablica[T]); End; Until T = High(Tablica); //ShowMessage('koniec'); End;
Mozecie powiedziec mi czemu, jesli program trafi na szukany znak nie wyswietla odpowiedniego komunikatu :?:?:? A wiem ze natrafia ;)
(patrz: komentarze) :D Pewnie znowu robie jakis prosty, glupi blad [:/]
--------------------
GG: 4206396
Szkoda ze niema opcji edycji posta [:/] Juz sobie poradzilem, natomiast niemoge zwolnic tablicy Tablica.Free - niedziala [:/] Wiecie moze czemu :? Wywala blad:
cytat:
[Pascal Error] Unit1.pas(1): Unable to invoke Code Completion due to errors in source code
--------------------
GG: 4206396
Poprawcie mnie, jeśli się mylę, ale chyba typ String nie ma metod. W tym FREE. A to, że tablica - to już inna beczka.
]==][::::::::::::::::::::::::>
:! Nie tykać nawet kijem długim na pięć metrów :!
Poza tym - niech żyją moderatorzy :P
To dosc prawdopodobne (NIE nabijam postów - zapomniałem o tym, co tu piszę), że NIE ma metody Free w Stringu, a to dlatego, że... Ten typ wywodzi się z "rdzenia" Pascala, za to, np. TBitmap to typy, ściślej obiekty, dodane później, a z racji tego, że są obiektami, to mają metody. Można zawsze spróbować szukać jakiejś zewnętrznej funkcji albo procedury "czyszczącej" Stringi. Albo zadeklarowałeś je jako stałe. Pomyśl chwilę nad tym, co napisałem i spróbuj odczytać myśl.
]==][::::::::::::::::::::::::>
:! Nie tykać nawet kijem długim na pięć metrów :!
Poza tym - niech żyją moderatorzy :P