problem z typami zmiennych (instrukacja if) delphi

2012-01-22 15:35

Rejestracja: 8 lat temu

Ostatnio: 7 lat temu

0

niedawno zaczalem pisanie w delphi.
mam taki fragment kodu
if (Listbox1.Items=x) then ShowMessage('znaleziono') else ('nie znaleziono');
x jest stringiem,
i wyskakuje problem z typami zmiennych:
"Incompatybile types: 'String' and 'Tstrings'
jak powinien wygladac ten kod aby dzialal poprawnie?

edytowany 1x, ostatnio: madmike, 2012-01-22 15:42

Pozostało 580 znaków

2012-01-22 15:39

Rejestracja: 14 lat temu

Ostatnio: 8 godzin temu

0
  if Listbox1.Items[indeks_itema]=x then ...

Pozostało 580 znaków

2012-01-22 17:13

Rejestracja: 8 lat temu

Ostatnio: 7 lat temu

0

teraz jest taki blad:
statement expected, but expression of type 'String' found.
x ma przypisany ciag znakow

Pokaż całą procedurę - pelsta 2012-01-22 17:15

Pozostało 580 znaków

2012-01-22 17:17
Moderator Delphi/Pascal

Rejestracja: 8 lat temu

Ostatnio: 2 godziny temu

Lokalizacja: Tuchów

0

Wklej cały kod, bo z tego nic nie wiadomo i nie można jasno określić problemu; Po drugie posłuż się guglami i znajdź to, co oznacza ww error; Z resztą w pomocy delphi o tym możesz na pewno przeczytać;

Jeżeli typy by się zgadzały to nie ma mowy o błędzie; Musi być gdzieś indziej, ale podałeś tylko linię warunku;

Zapewne podczas debugowania wykrył byś błąd. skorzystaj więc z niego;


Pozostało 580 znaków

2012-01-22 17:19

Rejestracja: 8 lat temu

Ostatnio: 7 lat temu

0

procedure TForm1.Button1Click(Sender: TObject);

function EnumWindowsProc(WHandle: HWND; LParM: LParam): Boolean;StdCall;Export;
var Title,ClassName:array[0..128] of char;
sTitle,sClass,Linia:STRING ;
x:string;
begin
x:=('notepad');
//Listbox1.clear;
Result:=True;
GetWindowText(wHandle, Title,128);
GetClassName(wHandle, ClassName,128);
sTitle:=Title;
sClass:=ClassName;
if IsWindowVisible(wHandle) then
begin
Linia:=sTitle+' '+sClass+' '+IntToHex(wHandle,4);
Form1.Listbox1.Items.Add(Linia);

end;

if Listbox1.Items[1]=x then ShowMessage('znaleziono') else ('nie znaleziono');
end;

begin
EnumWindows(@EnumWindowsProc,0);
end;

edytowany 1x, ostatnio: maniek1129, 2012-01-22 17:19
Zacznij lepiej naukę od podstaw... - pelsta 2012-01-22 17:26
podsatwy juz troche mam opanowane. a to akurat mnie zainteresowalo - maniek1129 2012-01-22 18:10
czyli nikt nie potrafi powiedziec co mam tu zle?? - maniek1129 2012-01-22 22:02
probowalem tez w inny sposob uchwycic okno, ale nie zawsze to dziala. jakby ktos mogl mi pomoc z tymi uchwytami, to bym prosil o jaka kolwiek pomoc, kod, link - maniek1129 2012-01-22 22:04

Pozostało 580 znaków

2012-01-23 22:20

Rejestracja: 8 lat temu

Ostatnio: 7 lat temu

0

zamienilem if'a na dodatkowy przycisk:

procedure TForm1.Button2Click(Sender: TObject);
var
S : String;
I:Integer;
begin
S:=Edit1.Text;

For I:=0 to ListBox1.Items.Count-1 do
If Pos(S, ListBox1.Items[i])>0 then
begin
label1.Caption:='slowo istnieje' ;
ListBox2.Items.Add(ListBox1.Items[i])
end
else
label1.Caption:='slowo nie istnieje';
end;

i tu wystepuje problem ktorego nie rozumiem, bo do Edit1 wpisuje nazwe jakiegos okna i program wyswietla jego nazwe w Listbox2 ale w label1 zamist pojawic sie 'slowo istnieje' pojawia sie 'slowo nie istnieje'

Pozostało 580 znaków

2012-01-23 22:31

Rejestracja: 14 lat temu

Ostatnio: 8 godzin temu

0

W label1 będzie napis wynikający z tego czy ostatni item z listbox1 zawiera s

Pozostało 580 znaków

2012-01-23 22:42

Rejestracja: 8 lat temu

Ostatnio: 7 lat temu

0

a no tak, nie przemyslalem tego ;)
a zeby wpisywal do Label1 'slowo istnieje' musze zastosowac jeszcze jedna petle czy da rade jakos szybciej to zalatwic??

Pozostało 580 znaków

123
2012-01-23 22:44
123
0

a zeby wpisywal do Label1 'slowo istnieje' musze zastosowac jeszcze jedna petle czy da rade jakos szybciej to zalatwic??

Instrukcją break lub exit. Pewnie jest jeszcze pare sposobów ale te najprostsze.

Pozostało 580 znaków

2012-01-23 22:53

Rejestracja: 8 lat temu

Ostatnio: 7 lat temu

0

ale break przerwie dzialanie funkcji i nie sprawdzi dalej czy podany wyraz sie powtarza

chce zeby znajdywal wszystkie okna z Listbox1 o podanej nazwie, a gdy tylko jakas zmienial Label1 na 'znaleziono', ale chce wyswietlac wszystkie

edytowany 1x, ostatnio: maniek1129, 2012-01-23 22:59

Pozostało 580 znaków

2012-01-23 23:06

Rejestracja: 14 lat temu

Ostatnio: 8 godzin temu

0
procedure TForm1.Button2Click(Sender: TObject);
var
  S : String;
  I:Integer;
begin
  S:=Edit1.Text;
  label1.Caption:='slowo nie istnieje';//wstępnie
  For I:=0 to ListBox1.Items.Count-1 do
    If Pos(S, ListBox1.Items[i])>0 then
    begin
      label1.Caption:='slowo istnieje';
      ListBox2.Items.Add(ListBox1.Items[i]);
    end;
end;

Pozostało 580 znaków

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