Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Farklı alanları olan array
#11
Haa anladım sanırım .



Type  Tikili= record
 biri, digeri : tBilgiArray;
End;

Var
 Likili : Tikili;
Begin
 SetLength( Likili.Biri, 2 );
 SetLength( Likili.Digeri, 3 );
 Likili.Biri[0].strValue := 'abc';
...
...
...
 Likili.Digeri[0].intValue := 123;
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#12
(29-09-2022, Saat: 17:23)mrmarman Adlı Kullanıcıdan Alıntı: Haa anladım sanırım .



Type  Tikili= record
 biri, digeri : tBilgiArray;
End;

Var
 Likili : Tikili;
Begin
 SetLength( Likili.Biri, 2 );
 SetLength( Likili.Digeri, 3 );
 Likili.Biri[0].strValue := 'abc';
...
...
...
 Likili.Digeri[0].intValue := 123;

Öncelike çok teşekkür ediyorum cevap için   Shy   çok yakın .  
Ama sanırım böyle de olur .. daha çok değer verirken array de olduğu gibi 

Likili.Digeri[0,0].intValue := 'Ali';
Likili.Digeri[0,1].intValue := 10;
Likili.Digeri[1,0].intValue := 'Ahmet' ;
Likili.Digeri[1,1].intValue := 20;


gibi bişi lazım. Aslında tam olarak record mu kullanmam gerekiyor onu da bilmiyorum ama sanırım hızlı olması ve anlaşılır olabilmesi için o daha kolay geldi. 


nWwPu0.png

Yukarıdaki gibi bir satış yapıldığında kampanya listesinden kontrol edip kampanyaya dahil olan ürünleri müşteriye sunmak istiyorum. 
1.Sorun her bir ürün satıldığında bu işin yapılıyor olması ve birden fazla kampanyanın denk gelebilecek olması , 
2.Sorun öncelikle sadece satılan ürünü kampanya listesinde aratıp kontrol ediyordum ama bu durumda daha önce satılan ürünlerden birinin de yeni satılan ürünle kampanyaya dahil olma ihtimali var o yüzden bu işlemleri hızlı bir şekilde database ile  uğraşmadan ( çok hızlı olmayacağını düşündüğümden) kontrol edip müşteriye sunmam lazım , 
3.sorun ise diyelim ki müşteri önceki kampanyadan yararlandı ve sonradan ürün ilave edince daha güzel bir kampanya denk geldi , bu durumda yeni kampanyayı sunmak gerekmez mi ?

bu işlemler ile ilgili nasıl bir yol izlenmeli bu konu hakkında fikri olan paylaşmak isteyen arkadaşlar paylaşabilirse çok sevinirim. 

herkese şimdiden çok teşekkür ediyorum.
Cevapla
#13
(09-01-2021, Saat: 16:23)mrmarman Adlı Kullanıcıdan Alıntı: Một ví dụ cơ bản sẽ thực hiện thủ thuật. 
[ars = delphi]
Loại
  tInformation = Bản ghi
    strField: string;
    intField: số nguyên;
    dblField: gấp đôi;
  chấm dứt;
  tInfoArray = Mảng tInfo;


function RandomDataOcurs (InfoNumber: Integer): tInfoArray;
var
  i: Số nguyên;
bắt đầu
  Ngẫu nhiên hóa;

  SetLength (Kết quả, BilgiSay);
  for i: = 0 to BilgiSay-1 do begin
    Kết quả [i] .dblField: = Random (100) + 1;
    Result [i] .intField: = Trunc (Kết quả [i] .dblField);
    Kết quả [i] .strField: = IntToStr (Kết quả [i] .intField);
  chấm dứt;
chấm dứt;

[/ ars]

Cú pháp:
[ars = delphi]
thủ tục TForm1.Button1Click (Người gửi: TObject);
var
  Kết quả: tBilgiArray;
  i: Số nguyên;
begin
  Kết quả: = RandomData Xảy ra (10);
  for i: = Thấp (Kết quả) đến Cao (Kết quả) do
    ShowmessageFmt ('% s -% d -% f', [Kết quả [i] .strField, Kết quả [i] .intField, Kết quả [i] .dblField]) ;
chấm dứt;
[/ ars]

Ony täzeden gurmaga synanyşdym, ýöne ýalňyşlyk aldym: TJSONArray 73-nji setirde 'Format' atly agzany öz içine almaýar. TForm1-de 'FormCreate' we 'FormClose' atly agza ýok. Bu ýalňyşlygy nädip çözmeli?
Cevapla
#14
Şöyle yapalım.

Bu GoogleDrive linkine proje halinde kopyaladım. Buradan indirip sizdeki delphi ile derleyip çalıştırın.

Düşüncem, noktalama hatası yapmış olabileceğiniz şeklinde. Format fonksiyonu SYSUTILS uniti içinde bir fonksiyondur. Örnekteki unit içindeki USES satırında SYSUTILS uniti de mevcuttur.
Görevi, string ifadeleri belirli bir şekilde düzenlemek için kullanılır. JSON üyesi sanıyor olması virgül, tırnak ve bunun benzeri bir kural hatası yapmış olduğunuzu gösteriyor.


(03-10-2022, Saat: 19:16)Master_Crazy Adlı Kullanıcıdan Alıntı:
(09-01-2021, Saat: 16:23)mrmarman Adlı Kullanıcıdan Alıntı: Một ví dụ cơ bản sẽ thực hiện thủ thuật. 
[ars = delphi]
Loại
  tInformation = Bản ghi
    strField: string;
    intField: số nguyên;
    dblField: gấp đôi;
  chấm dứt;
  tInfoArray = Mảng tInfo;


function RandomDataOcurs (InfoNumber: Integer): tInfoArray;
var
  i: Số nguyên;
bắt đầu
  Ngẫu nhiên hóa;

  SetLength (Kết quả, BilgiSay);
  for i: = 0 to BilgiSay-1 do begin
    Kết quả [i] .dblField: = Random (100) + 1;
    Result [i] .intField: = Trunc (Kết quả [i] .dblField);
    Kết quả [i] .strField: = IntToStr (Kết quả [i] .intField);
  chấm dứt;
chấm dứt;

[/ ars]

Cú pháp:
[ars = delphi]
thủ tục TForm1.Button1Click (Người gửi: TObject);
var
  Kết quả: tBilgiArray;
  i: Số nguyên;
begin
  Kết quả: = RandomData Xảy ra (10);
  for i: = Thấp (Kết quả) đến Cao (Kết quả) do
    ShowmessageFmt ('% s -% d -% f', [Kết quả [i] .strField, Kết quả [i] .intField, Kết quả [i] .dblField]) ;
chấm dứt;
[/ ars]

Ony täzeden gurmaga synanyşdym, ýöne ýalňyşlyk aldym: TJSONArray 73-nji setirde 'Format' atly agzany öz içine almaýar. TForm1-de 'FormCreate' we 'FormClose' atly agza ýok. Bu ýalňyşlygy nädip çözmeli?
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#15
Kapsamlı rehberlik için teşekkürler. Projenizi indirdim ve derledim. Hata hala görünüyor. Aptal IDE? Farklı revizyonlar için bir düzeltme var mı?
Cevapla
#16
Kullanmakta olduğunuz Delphi versiyon nedir?
Eğer Delphi 2010 ve daha eski sürümüyse uses kısmındaki noktayla ayrılmış unit isimlerinde vcl.XXX  system.XXX benzeri ön takıları (nokta ve öncesi) silmek isteyebilirsiniz. Bu tanımlama şekli yeni Delphi sürümleri ile hayata geçti.

Aklıma Lazarus kullanma ihtimaliniz de geliyor. Bu durumda bu unitler de farklılaşır.

Format function olan yerleri direkt string ifade ile değiştirin.

      aJSONObject.AddPair( 'intAlan', Format( '%d', [  FBilgiarray[i].intAlan ] ) );

     aJSONObject.AddPair( 'dblAlan', Format( '%f', [  FBilgiarray[i].dblAlan ] ) );


Yerine

      aJSONObject.AddPair( 'intAlan', IntToStr(FBilgiarray[i].intAlan) );

     aJSONObject.AddPair( 'dblAlan', FloatToStr( FBilgiarray[i].dblAlan) );
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#17
(04-10-2022, Saat: 08:08)mrmarman Adlı Kullanıcıdan Alıntı: Kullanmakta olduğunuz Delphi versiyon nedir?
Eğer Delphi 2010 ve daha eski sürümüyse uses kısmındaki noktayla ayrılmış unit isimlerinde vcl.XXX  system.XXX benzeri ön takıları (nokta ve öncesi) silmek isteyebilirsiniz. Bu tanımlama şekli yeni Delphi sürümleri ile hayata geçti.

Aklıma Lazarus kullanma ihtimaliniz de geliyor. Bu durumda bu unitler de farklılaşır.

Format function olan yerleri direkt string ifade ile değiştirin.

      aJSONObject.AddPair( 'intAlan', Format( '%d', [  FBilgiarray[i].intAlan ] ) );

     aJSONObject.AddPair( 'dblAlan', Format( '%f', [  FBilgiarray[i].dblAlan ] ) );


Yerine

      aJSONObject.AddPair( 'intAlan', IntToStr(FBilgiarray[i].intAlan) );

     aJSONObject.AddPair( 'dblAlan', FloatToStr( FBilgiarray[i].dblAlan) );
Delphi 10.2 / Satırda derleme hatası: 'TJSONArray' satırında 'Format' adlı bir üye içermiyor
Cevapla
#18
(06-10-2022, Saat: 05:50)Master_Crazy Adlı Kullanıcıdan Alıntı:
(04-10-2022, Saat: 08:08)mrmarman Adlı Kullanıcıdan Alıntı: Kullanmakta olduğunuz Delphi versiyon nedir?
Eğer Delphi 2010 ve daha eski sürümüyse uses kısmındaki noktayla ayrılmış unit isimlerinde vcl.XXX  system.XXX benzeri ön takıları (nokta ve öncesi) silmek isteyebilirsiniz. Bu tanımlama şekli yeni Delphi sürümleri ile hayata geçti.

Aklıma Lazarus kullanma ihtimaliniz de geliyor. Bu durumda bu unitler de farklılaşır.

Format function olan yerleri direkt string ifade ile değiştirin.

      aJSONObject.AddPair( 'intAlan', Format( '%d', [  FBilgiarray[i].intAlan ] ) );

     aJSONObject.AddPair( 'dblAlan', Format( '%f', [  FBilgiarray[i].dblAlan ] ) );


Yerine

      aJSONObject.AddPair( 'intAlan', IntToStr(FBilgiarray[i].intAlan) );

     aJSONObject.AddPair( 'dblAlan', FloatToStr( FBilgiarray[i].dblAlan) );
Delphi 10.2 / Satırda derleme hatası: 'TJSONArray' satırında 'Format' adlı bir üye içermiyor

Format() fonksiyonu, SysUtils unit'indedir. Eğer Uses kısmına eklemediyseniz hata verir.
Cevapla
#19
(07-10-2022, Saat: 18:55)mustafaozpinar Adlı Kullanıcıdan Alıntı:
(06-10-2022, Saat: 05:50)Master_Crazy Adlı Kullanıcıdan Alıntı: Delphi 10.2 / Satırda derleme hatası: 'TJSONArray' satırında 'Format' adlı bir üye içermiyor

Format() fonksiyonu, SysUtils unit'indedir. Eğer Uses kısmına eklemediyseniz hata verir.

Unit BilgilerU'da unit tanımlandı fakat yine de bahsedildiği gibi hata veriyor;
Cevapla
#20
Format fonksiyonu D10.4'te System.SysUtils unit'inin içinde.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Rest.JSON array serilize hk yhackup 11 1.971 28-11-2024, Saat: 12:35
Son Yorum: delphi.developer
  video player olan formu kapatma tekrar acma sorunu sadikacar60 3 773 26-11-2024, Saat: 16:39
Son Yorum: esistem
  Json Data Binding ile oluşturulan json içine Array ekleme aegean 4 1.612 17-05-2024, Saat: 12:36
Son Yorum: Tuğrul HELVACI
  harf olan kayıtları görmezden gelme ercanskose 9 2.084 30-01-2024, Saat: 11:26
Son Yorum: elixir84
  Aktif olan tarayıcıdan URL bilgisi almak eraendless 7 1.936 15-09-2023, Saat: 08:36
Son Yorum: eraendless



Konuyu Okuyanlar: 1 Ziyaretçi