char array içine string kopyalamak

Başlatan bunalmis, 29 Aralık 2009, 06:52:20

z

s:string[10];

a: array [0..10] of char;


a[0]:=s[1];
a[1]:=s[2];
a[2]:=s[3];
.....

Şeklinde uzun uzun işlem yapmadan a arrayine s stringini nasıl kopyalarım.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

M_B

hocam şu şekilde yapabilirsiniz. Dongu kurarak.
Benim önerdiğim C için gecerli Delphi bilmiyorum ama mantık olarak aynıdır diye dusunuyorum.

for(i=0;i<10;i++)
a[i]=s[i++];


Saygılar
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

z

Demek istediğim bu tip atamalar yapmadan başarmak.

Hazırda komut varmı diye merak ettim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Salih

S:string[10];
Burda zaten s değişkeni aynı zamanda array özelliğide taşır.
ikinci bir S1:string[10] tanımla niye array tanımlıyorsun.
S1 değişkenin istediğin harfine örneğin S1[2] diye ulaşabilirsin.

sekoli

Selamlar,
procedure Move(const Source; var Dest; Count: Integer);

Description

Move copies Count bytes from Source to Dest. No range checking is performed. Move compensates for overlaps between the source and destination blocks. 

Whenever possible, use SizeOf to determine the count.

örnek :
Move(s, a, sizeof(s));


Kolay gelsin.

parda

Merhaba

C de memcpy, strcpy, strncpy gibi komutları inceleyiniz derleyiciye göre ufak tefek farklılıklar olabiliyor.

Kolaygelsin
Bildiğim tek şey, hiç bir şey bilmediğimdir.

birumher

Sekoli nin dediği gibi move komutu ile yapabilirsin.


Move(s[1], a[0],10) gibi.

Burada dikkat edilmesi gereken 2 şey var.

s:string[10]; ise
a: array [0..9] of char; olmalı.

Eğer unicode desteği olan Delphi 2009 kullanılıyorsa ya ansichar ve ansistring kullanılacak veya her karakterin 2 byte yer tuttuğu göz önünde bulundurulacak...
Birkan.Herguner

z

Alıntı yapılan: "salih"S:string[10];
Burda zaten s değişkeni aynı zamanda array özelliğide taşır.
ikinci bir S1:string[10] tanımla niye array tanımlıyorsun.
S1 değişkenin istediğin harfine örneğin S1[2] diye ulaşabilirsin.

Alistirma yapmak icin sordum. String fazladan string boyu bilgisi de iceriyor asm ile calisirken array calismasina aliskanliktan ihtiyac duydum.
Bana gore arraydeki verisonunu ozel bir karakterler sonlandirmak suretiyle kodlamadaki kontrol islemleri  daha hizli oluyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Klein

hocam "copy" fonksiyonuna bir bak.

Salih

Alıntı yapılan: "bunalmis"
Alıntı yapılan: "salih"S:string[10];
Burda zaten s değişkeni aynı zamanda array özelliğide taşır.
ikinci bir S1:string[10] tanımla niye array tanımlıyorsun.
S1 değişkenin istediğin harfine örneğin S1[2] diye ulaşabilirsin.

Alistirma yapmak icin sordum. String fazladan string boyu bilgisi de iceriyor asm ile calisirken array calismasina aliskanliktan ihtiyac duydum.
Bana gore arraydeki verisonunu ozel bir karakterler sonlandirmak suretiyle kodlamadaki kontrol islemleri  daha hizli oluyor.
Özel bir durum varsa o zaman bir function tanımlanacak, parametre olarak istediğin tip değişkenini kullanacaksın.
neticede işlem byte byte kopyalama ile yapılacak. Kendimizde yapsak hazırda kullansak temel mantık değişmez gibime geliyor.

aykuto

s:string[10];
a: array [0..10] of char;

Yukarıdaki gibi bir yapıda delphi'de direk olarak,

s:=a;

yazılabilir.

Tersi için:

strpcopy(a,s);

Bunlar dışında string işlemleri için strpas komutunu da inceleyin. Bazı durumlarda bu komutu da kullanmak gerekebiliyor.

Salih

s:string[10]; 
a: array [0..10] of char; 

Yukarıdaki gibi bir yapıda delphi'de direk olarak, 

s:=a; 

yazılabilir. 

Tersi için: 

strpcopy(a,s);

Dediğiniz bence olmaz. Çünkü arkadaş Delphi deki string yapısını değiştirmeyi düşünüyor. Yani arkadaşın char dizisindeki yapı ile normal delphi deki string yapısı uyumlu değil.

aykuto

Alıntı yapılan: "salih"
s:string[10]; 
a: array [0..10] of char; 

Yukarıdaki gibi bir yapıda delphi'de direk olarak, 

s:=a; 

yazılabilir. 

Tersi için: 

strpcopy(a,s);

Dediğiniz bence olmaz. Çünkü arkadaş Delphi deki string yapısını değiştirmeyi düşünüyor. Yani arkadaşın char dizisindeki yapı ile normal delphi deki string yapısı uyumlu değil.

1998 yılından beri Delphi ile program yazıyorum ve yukarıdaki yapı çok sık kullandığım bir yapıdır. Yani oluyor..  ;)

Not: Kendinizden emin olduğunuzu düşünerek yinede az önce delphi üzerinde denedim ve gayet güzel çalıştığını gördüm. :)

z

Aykuto

Delphide eski olduguna gore bana yardimci olabilirsin.

Mouse ile bir degiskenin ustune geldigimizde sistem hemen degiskenin aldigi degeri gosteriyor.

Bu ozellik, kodlardaki hatayi ayiklarken cok faydali.

Ancak eger uzerine gelinen degisken artik bir daha yeni deger almayacak konumda ise uzerine mouse ile geldigimizde icerigini goremiyoruz.

Ben hangi durumda olursam olayim degisken ustune gelince degerini ogrenmek istiyorum. Watch window isime gelmiyor cunku ekran zaten kalabalik bir de onun icin yerden kaybetmek istemiyorum.

Bu islem bir yerlerde tanimlimi? Nasil degisken icerigini gorurum?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

sekoli

Ayarlardan optimization'ı kapatın.