07-10-2018, Saat: 12:18
Problemi çözemedm yardım eden kimse yok mu
Hala aynı yerdeyim
Hala aynı yerdeyim

ARRAYi nasıl for'la dönerim.
|
07-10-2018, Saat: 12:18
Problemi çözemedm yardım eden kimse yok mu
Hala aynı yerdeyim ![]()
07-10-2018, Saat: 12:35
(Son Düzenleme: 07-10-2018, Saat: 12:36, Düzenleyen: ahmet_sinav.
Sebep: variant
)
Array of variant veya TArray<T> olarak kullanabilirsin veya TDictionary var bunları inceleyebilirsin.
İmam Süleyman Yakub <--> Molla Mustafa Mansur
Evlatlarım! Cismanımız TÜRK ruhumuz ise İSLAM. Bu yolda daim olalım her an.
Merhaba.
Ama siz de bize yardımcı olmuyorsunuz ki ... oku(INTARRAY); veya oku(FLOATARRAY ); dediğiniz zaman bir amaç bekliyoruz. - Bu varsayalım sesli okuma olsa bile bilgisayarın hoparlörü aracılığıyla size hizmet eder. - Procedure veya Function olarak verdiğini parametre ARRAY'ın Variant benzeri bir yapıda olmasını öngörüyorsun anladık ama fonksiyon ise cevabı ne olacak. Procedure ise nereye hizmet edecek... - Şimdi vereceğim bilgi hazır lokmadan ziyade araştırma için yolunu kaybetmiş kişilere başlama noktası olsun ![]() System UNIT'de aşağıdaki şekilde VARIANT tip tanımları yer alır. Buradan feyz alarak şunu yapabilirsiniz. Kod: (Select All) const SYSTEM bize referans olduğunda göre aynı bilgiyi burada kullanarak şunu yapabilirsiniz. procedure MevlanaArray( aArrayParam: Variant ); Var i : Integer; iType : Integer; strType : String; begin ShowMessageFmt('Başı: %d, Sonu: %d', [ VarArrayLowBound(aArrayParam, 1), VarArrayHighBound(aArrayParam, 1) ]); for i := VarArrayLowBound(aArrayParam, 1) to VarArrayHighBound(aArrayParam, 1) do begin iType := VarType( aArrayParam[i] ); case iType of varEmpty : strType := 'varEmpty '; // $0000; { vt_empty 0 } varNull : strType := 'varNull '; // $0001; { vt_null 1 } varSmallint : strType := 'varSmallint'; // $0002; { vt_i2 2 } varInteger : strType := 'varInteger '; // $0003; { vt_i4 3 } varSingle : strType := 'varSingle '; // $0004; { vt_r4 4 } varDouble : strType := 'varDouble '; // $0005; { vt_r8 5 } varCurrency : strType := 'varCurrency'; // $0006; { vt_cy 6 } varDate : strType := 'varDate '; // $0007; { vt_date 7 } varOleStr : strType := 'varOleStr '; // $0008; { vt_bstr 8 } varDispatch : strType := 'varDispatch'; // $0009; { vt_dispatch 9 } varError : strType := 'varError '; // $000A; { vt_error 10 } varBoolean : strType := 'varBoolean '; // $000B; { vt_bool 11 } varVariant : strType := 'varVariant '; // $000C; { vt_variant 12 } varUnknown : strType := 'varUnknown '; // $000D; { vt_unknown 13 } //varDecimal : strType := 'varDecimal '; // $000E; { vt_decimal 14 } {UNSUPPORTED as of v6.x code base} //varUndef0F : strType := 'varUndef0F '; // $000F; { undefined 15 } {UNSUPPORTED per Microsoft} varShortInt : strType := 'varShortInt'; // $0010; { vt_i1 16 } varByte : strType := 'varByte '; // $0011; { vt_ui1 17 } varWord : strType := 'varWord '; // $0012; { vt_ui2 18 } //varLongWord : strType := 'varLongWord'; // $0013 { vt_ui4 19 } {deprecated 'use varUInt32'} ; varUInt32 : strType := 'varUInt32 '; // $0013; { vt_ui4 19 } varInt64 : strType := 'varInt64 '; // $0014; { vt_i8 20 } varUInt64 : strType := 'varUInt64 '; // $0015; { vt_ui8 21 } varRecord : strType := 'varRecord '; // $0024; { VT_RECORD 36 } varStrArg : strType := 'varStrArg '; // $0048; { vt_clsid 72 } varObject : strType := 'varObject '; // $0049; { 73 } varUStrArg : strType := 'varUStrArg '; // $004A; { 74 } varString : strType := 'varString '; // $0100; { Pascal string 256 } {not OLE compatible } varAny : strType := 'varAny '; // $0101; { Corba any 257 } {not OLE compatible } varUString : strType := 'varUString '; // $0102; { Unicode string 258 } {not OLE compatible } varTypeMask : strType := 'varTypeMask'; // $0FFF; varArray : strType := 'varArray '; // $2000; varByRef : strType := 'varByRef '; // $4000; end; case iType of varDouble : ShowMessage( FloatToStr(aArrayParam[i]) ); varOleStr : ShowMessage( aArrayParam[i] ); varInteger : ShowMessage( IntToStr(aArrayParam[i]) ); varDate : ShowMessage( DateTimeToStr( aArrayParam[i] ) ); varEmpty : ShowMessage( 'içinde hiç veri yok' ); else ShowMessageFmt(' Tipini bilemedim... TypeID = %d (%s) ', [iType, strType] ); end; end; end; procedure TForm1.BitBtn1Click(Sender: TObject); var VarArray : Variant; begin VarArray := VarArrayCreate( [0, 4 - 1], varVariant ); VarArray[0] := String ( 'Muharrem' ); VarArray[1] := Integer ( 1973 ); VarArray[2] := TDateTime( Now() ); VarArray[3] := Double ( 0.127 ); MevlanaArray( VarArray ); VarClear( VarArray ); end;
Saygılarımla
Muharrem ARMAN ![]()
07-10-2018, Saat: 18:06
(07-10-2018, Saat: 13:10)mrmarman Adlı Kullanıcıdan Alıntı: Merhaba.Merhaba Siz iyi bir abiye benziyorsunuz.Ben de biraz yardımcı olmaya çalışayım. Sorumda da belirmiştim. "Böyle her türlü ARRAYi okuyabilecğim genel bir fonksiyon yazabilirmiiym" Ama sanırım tam ifade edememişim.İfade etmeye çalışayım. Alıntı:oku(INTARRAY); veya oku(FLOATARRAY ); dediğiniz zaman bir amaç bekliyoruz.Buradaki amaç; "sadece" farklı türlerdeki dizileri tek bir fonksiyona parametre olarak geçebilmekti. Bunu verdiğiniz Variant örneğinde görebiliyoruz.Muhtemelen bizim bilmediğimiz daha farklı yöntemleri de vardır.Olabilir. Fonksiyon ya da procedure içerisinde ne yapıldığının çok bir önemi yoktu. Belki tasarım açısından bir fonksiyona her türlü veri tipini geçip karmaşıklığını arttırmak, metrik ve tasarım açısından çok doğru bir yaklaşım olmayabilir.Amacımız Variant tipinin modern diye tabir edebileceğimiz TValue tipine yakından bakmaktı. Hazır lokmada olsa yemeden önce içinde zararlı bir şey var mı diye bakmak doğru olur. Variant'dan feyz alarak aşağıdaki gibi fonksiyon yazdım. procedure Ikra(const AValue: TValue); var I: Integer; ATypeInfo: PTypeInfo; begin if not AValue.IsArray then // if not(AValue.TypeInfo.Kind in [tkDynArray, tkArray]) then raise Exception.Create('Bu bir array değildir!'); for I := 0 to AValue.GetArrayLength - 1 do begin ATypeInfo := AValue.GetArrayElement(I).TypeInfo; if ATypeInfo.Kind = tkInteger then begin ShowMessage(AValue.GetArrayElement(I).AsInteger.ToString); end; if ATypeInfo.Kind = tkFloat then begin ShowMessage(AValue.GetArrayElement(I).AsExtended.ToString); end; if ATypeInfo.Kind = tkVariant then begin ShowMessage(AValue.GetArrayElement(I).AsVariant.ToString); end; end; end; var AIntArray: array of Integer; AFloatArray: array of Double; AGenericIntArray: TArray<Integer>; AVariantArray: array of Variant; AValue: TValue; AStaticIntArray: array [0 .. 1] of Integer; begin SetLength(AIntArray, 1); AIntArray[0] := 21; SetLength(AFloatArray, 1); AFloatArray[0] := 2.2; SetLength(AGenericIntArray, 1); AGenericIntArray[0] := 25; SetLength(AVariantArray, 1); AVariantArray[0] := 54; AStaticIntArray[0] := 2; Ikra(TValue.From(AStaticIntArray)); Ikra(TValue.From(AIntArray)); Ikra(TValue.From(AIntArray)); Ikra(TValue.From(AFloatArray)); Ikra(TValue.From(AGenericIntArray)); Ikra(TValue.From(AVariantArray)); end; (07-10-2018, Saat: 12:35)ahmet_sinav Adlı Kullanıcıdan Alıntı: Array of variant veya TArray<T> olarak kullanabilirsin veya TDictionary var bunları inceleyebilirsin.Teşekkürler ama ne işe yaradığını bilmediğim bir hash table implementasyonu olan TDictionary kullanmak istemiyorum. Cümleten hakkınızı helal ediniz.
07-10-2018, Saat: 18:32
İnsanın en iyi yardımı yine kendisinden alabileceğini kanıtlamış olduk. Biraz zor bir süreçti, farkındayım fakat bu, seni kaynak taramaya, araştırma yapmaya yönlendirmenin ve mesleki anlamda kendi ayakların üzerinde sağlam durabilmeni sağlamanın en hızlı yolu... Sonuca ulaşmış olmana sevindim.
Son bir tavsiye, her sorunun sadece tek bir çözümü yoktur...
YouTube Delphi Tips
"Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır" Peyami Safa
07-10-2018, Saat: 22:19
(07-10-2018, Saat: 18:32)uparlayan Adlı Kullanıcıdan Alıntı: İnsanın en iyi yardımı yine kendisinden alabileceğini kanıtlamış olduk. Biraz zor bir süreçti, farkındayım fakat bu, seni kaynak taramaya, araştırma yapmaya yönlendirmenin ve mesleki anlamda kendi ayakların üzerinde sağlam durabilmeni sağlamanın en hızlı yolu... Sonuca ulaşmış olmana sevindim.evet araştırma yapınca ve yazılanları okuyunca yazabildim.Bundan sonra yapmak istediklerimi hemen yapmaya kalkışmadan önce, önce araştırma ve denemeler yapacağım.Örnek kod yazmadınız ama siz de iyi bir abiye benziyorsunuz. ![]() Herkese teşekkür ederim.
26-08-2023, Saat: 14:33
(05-10-2018, Saat: 17:06)PREDATOR Adlı Kullanıcıdan Alıntı: merhaba döngüleri genelde aşağıdaki gibi kullanıyorum.Böyle her türlü ARRAYi okuyabilecğim genel bir fonksiyon yazabilirmiiym.örnek kod yazarmısınız. Bağlantıdaki bilgiler faydalı olacaktır: https://docwiki.embarcadero.com/Librarie...ons.TArray
.
|
« Önceki Konu | Sonraki Konu »
|
Konu ile Alakalı Benzer Konular | |||||
Konular | Yazar | Yorumlar | Okunma | Son Yorum | |
Delphi 7 deki pencereleri nasıl sabitleyebilirim? | mxpain | 1 | 155 |
12-12-2024, Saat: 08:50 Son Yorum: 3ddark |
|
resimdeki hatanin satirini nasil bulabiliriz. | sadikacar60 | 6 | 315 |
25-11-2024, Saat: 19:18 Son Yorum: sadikacar60 |
|
Programdaki donmanin sebebi nasil yakalanir. | sadikacar60 | 2 | 249 |
17-10-2024, Saat: 18:21 Son Yorum: sadikacar60 |
|
string icinde alt satirda goster koduyla beraber nasil gonderilir | sadikacar60 | 4 | 327 |
09-09-2024, Saat: 08:42 Son Yorum: damert6 |
|
HTTPRIO ile TLS 1.2 Kullanımı Nasıl Yapılabilir? | hi_selamlar | 6 | 2.262 |
01-08-2024, Saat: 14:33 Son Yorum: unicasoft |