dizi hakkında

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
true_false
Üye
Mesajlar: 401
Kayıt: 22 Tem 2004 02:03
Konum: sıkıntı çekmişlere yakın bi yerden

dizi hakkında

Mesaj gönderen true_false »

problem şu
programın içinde bir yumurta oluşturmak
alt tuşu ile birlikte basılan tuşları benim belirlemiş olduğum bir dizinin içine göndererek dizi ve klavyeyi karşılştıran eğer doğruysa showmessage ile mesaj veren bir program

not:koda dökülmeden önceki bütün adımları biliyorum keypress falan sorun aslına bakarsanız şu dizi oluşturmak bunu malesef :( bilmiyorum edit kullanarak yaptım ama dizi bilmiyom.... :roll:

anlayamayanlar için

on key down:
begin
shift =[ssalt]then begin

if (shift=[ssalt])and (key=(//herhangi birharfin ascii kodu) then
edit1.text:='o harf';//işte dizi bilsem ona atıcam ama :roll:
....
....
else
//burda elimizi alt tuşundan çektiğimiz zaman diziyi sıfırlıcak ve başa döncek



bir not daha:sadece öğrenme amaçlı olup herhangi bir acelesi yoktur şimdiden yüksek ilgi ve alakanıza teşekkür eder saygılarımı sunarım
type
Tform1 = class(Tform)
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Burda dizinin boyutu belli olmadığından dinamik dizi kullanmalısın. Dinamik dizinin kullanımını göstereyim:

tanımlama:

Kod: Tümünü seç

var
  dizim : array of string;
dizinin boyutunu belirleme:

Kod: Tümünü seç

  setlength(dizim,boyut);
dizinin 0. elemanından boyut-1. elemanına kadar değer ataması yapabilirsin. Her tuşa basıldığında dizinin boyunu bir artırman lazım.
true_false
Üye
Mesajlar: 401
Kayıt: 22 Tem 2004 02:03
Konum: sıkıntı çekmişlere yakın bi yerden

atamalar

Mesaj gönderen true_false »

ozaman atamaları nasıl yapacam
örn:

Kod: Tümünü seç

if (shift=[alt] ) and (key=ascii) then
dizim(0):='s';
gibimi olacak ???

(şuan bir delphi programım yok onun için deneme imkanı bulamıyorum)
ve birde karşılaştırma heralde lenght ile olacaktır sanırsam galiba
type
Tform1 = class(Tform)
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Kod: Tümünü seç

dizim[0] := 's'
gibi..

Karşılaştırmalardan kastınız?
true_false
Üye
Mesajlar: 401
Kayıt: 22 Tem 2004 02:03
Konum: sıkıntı çekmişlere yakın bi yerden

Mesaj gönderen true_false »

kastım şu

dizinin bütün alanlarına stringlerimizi attım diyelim
bizim baştan belirlediğimiz diğerbir dizi daha olsun bunun içinede bir string girelim
ondan sonra shiftlerle oluşturduğumuz dizi ile bizim sabit belirlediğimiz diziyi karşılaştırma yapalım eğer eşit ise
sorumun cevabı gelcek

Kod: Tümünü seç

 ifi dizi1=dizi2 then 
  showmwssage('oldu da bitti maşallah');
end;
gibi
bölemi olacak aslında biz konuyu saptırdık sadece dizilerle uğraşıyoz
sorum yukardaki gibi olacaktı
ben karıştırdım biraz çorba oldu galiba napalım yardımların için saol eğer benim sorum ile ilgili bir cevabın varsa buraya yazarsan sevinirim
type
Tform1 = class(Tform)
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Baştan belirttiğin dizin statik bir dizi. ona dizi1 diyelim. Boyutu n olsun. Bizim klavyeden aldığımız değerleri attığımız dinamik dizi ise dizi2 ve onun da boyutu boyut. Bu iki dizide karşılaştırma yapman lazım.

Karşılaştırma ksımını yazıyorum:

Kod: Tümünü seç

var
 i, k, n, boyut :integer;
begin
  ...
  for k := 0 to boyut-1 do
    for i := 0 to n-1 do
    begin
      if dizi2[k] = dizi1[i] then
      ............. // ne yapmak istiyorsan
    end;
end;
bu döngü seçtiğin tuşlarla sabit dizindeki elemanları karşılaştırır.
true_false
Üye
Mesajlar: 401
Kayıt: 22 Tem 2004 02:03
Konum: sıkıntı çekmişlere yakın bi yerden

Mesaj gönderen true_false »

bunlar sayısal değer benim istediğim stringleri karşılaştırma

Kod: Tümünü seç

 
lenght(edit1.text)= lenght(edit2.text)
gibi bir karşılaştırma yapmak istiyorum
benim sorumu hala anlamadın galiba naile
ama benim gibi bir acemi ile uğraştığın için saol
type
Tform1 = class(Tform)
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

S.A.
Sanırım yapmak istediğin şey için diziye gerek yok.
basılan tuşları string bir değişkene ekle

Kod: Tümünü seç

s:=s+chr(key);
gibi
daha sonra pos ile bu s değişkeninde senin aradığın ifade varmı onu kontrol ettir varsa işlem tamamdır.

Kod: Tümünü seç

if pos('ABC',s)>0 then
showmessage('hebele hübele'); 
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

ben şöle bişey yapmıştım.
gerçi ben alt tuşunu kontrol ettirmedim ama onuda sen eklersin.

strEggCaption adlı değişkene kullanıcıya göstereceğin mesajı ata
prgadi adlı değişkenede de kullanıcının bulması gereken kelimeyi ata :)

Kod: Tümünü seç

  private
    { Private declarations }
  public
    { Public declarations }
  end;

  const
  strEggCaprion         ='"IT REALLY WHIPS THE LLAMA''S ASS!" ;)     ';
  PrgAdi                    ='caykurrizespor';

var
  fhakkinda: Tfhakkinda;
  Egg : Array Of Char;
  Tus : String;
implementation



her tuşa bastığında kelimeyi doğru yazıp yazmadığını kontrol ediyoruz
doğru yazmışsa timerı çalıştırıp formun captionında mesajımızı kaydırmaya başlıyoruz.

Kod: Tümünü seç

procedure Tfhakkinda.FormKeyPress(Sender: TObject; var Key: Char);
begin
Tus := Tus + Key;
Tus := LowerCase(Tus);

If Tus = prgAdi Then
Begin
          Caption := strEggCaprion;
          Beep;
          Tus := '';
          timer1.Enabled := True;
end
Else
Begin
        If Not (Tus[Length(Tus)] = Egg[Length(Tus)]) Then
                Tus := '';

end;
end;

Kod: Tümünü seç

procedure Tfhakkinda.FormCreate(Sender: TObject);
VAR
i:Byte;
begin
SetLength(Egg,Length(PrgAdi)+1);

For i:=0 to high(Egg) Do
        Egg[i] := PrgAdi[i];

Tus := '';
KeyPreview := True;
Timer1.enabled := False;
end;

Kod: Tümünü seç

procedure Tfhakkinda.Timer1Timer(Sender: TObject);
begin
CAPTION:=COPY(CAPTION,2,LENGTH(CAPTION)-1)+CAPTION[1];
end;
Cevapla