Delphi de string parçalama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
onaydin

Delphi de string parçalama

Mesaj gönderen onaydin »

Delphi de metin parçalama nasıl yapılır?
Şunun gibi

Kod: Tümünü seç

<?
 $metin = "ali veli";
 // boşluk ayıran karakter
 $dizi = split(" ",$metin);
 foreach($dizi as $key)
  {
   $sonuc .= " and a = ". $key ." " ; 
  }
  echo $sonuc ;
  //and a = ali and a = veli 
?>
hazır fonksiyonu var mıdır, yoksa sql deki gibi
ayracın pozisyonunu bulup döngü içinde arayarak mı yapılır?
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

S.A.
hazır kod varmı bilmiyorum ama
1. pos ile boşluk arayarak yapabilirsin.
2. stringlist lerde comma text bazen otomatik olarak bölüyor. onu biraz kurcalarsan belki ordan bir sonu. çıkabilir.
Kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

Kod: Tümünü seç

function SplitString(const str: string; const separator: string): TStringArray;
// Returns an array with the parts of "str" separated by "separator"
//TStringArray = array of string;
var
  i, n: integer;
  p, q, s: PChar;
begin
  SetLength(Result, Occurs(str, separator) + 1);
  p := PChar(str);
  s := PChar(separator);
  n := Length(separator);
  i := 0;
  repeat
    q := StrPos(p, s);
    if q = nil then
      q := StrScan(p, #0);
    SetString(Result[i], p, q - p);
    p := q + n;
    inc(i);
  until q^ = #0;
end;
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
Asri
Kıdemli Üye
Mesajlar: 767
Kayıt: 16 Eyl 2003 09:54
Konum: istanbul

Mesaj gönderen Asri »

Bu benim, txt dosyalardaki bir satırdan alanları okumak için yazdığım kod.
Farklı bir mantık daha uzun yollu (her bir alan için bir satır kod yazmak gerekiyor.) ama olsun. Bir fikir verir.

son1:integer;
s1,s11,s12.....sxx:string;

s1 parçalanacak satır değişkeni.

Kod: Tümünü seç

 son1:=pos(' ',s1);s11:=copy(s1,1,son1-1);s1:=copy(s1,son1+1,length(s1));
 son1:=pos(' ',s1);s12:=copy(s1,1,son1-1);s1:=copy(s1,son1+1,length(s1));
.
.
.
 son1:=pos(' ',s1);sxx:=copy(s1,1,son1-1);s1:=copy(s1,son1+1,length(s1));
Öğrenmek ve öğretmek, akıntıya karşı yüzmek gibidir ilerleyemediğiniz taktirde gerilersiniz.
algorian
Üye
Mesajlar: 20
Kayıt: 24 Kas 2004 10:54

Mesaj gönderen algorian »

anlaşılır bir çözüm : viewtopic.php?p=32772&highlight=#32772

Kod: Tümünü seç

function kelimelereAyir(str : string) : TStringList;
LazyCoder
Üye
Mesajlar: 13
Kayıt: 01 Eki 2003 01:27
İletişim:

Mesaj gönderen LazyCoder »

bu da benim yazdığım bir kod..

Kod: Tümünü seç

procedure Parse(x,substr: String;list:TListBox);
var
i,aa: integer;
dd: String;
begin
aa := Length(x);
   for i := 1 to aa do
      begin
          dd :=  Copy(x,1,POS(substr,x)-1);
                if dd <> '' then
                    List.items.Add(dd);
          delete(x,1,length(dd)+1);
                if pos(substr,x) = 0 then
                  begin
                    list.items.add(Copy(x,1,Length(x)));
                    exit;
                 end;
      end;
end;

kullanımı ise,

Kod: Tümünü seç

parse('Birinci Satır$İkinci Satır$Son Satır','$',Listbox1);
List değişkenini TListbox yerine başka birşey yapabilirsiniz elbet.
sensei44
Üye
Mesajlar: 1
Kayıt: 01 Eki 2012 02:57

Re: Delphi de string parçalama

Mesaj gönderen sensei44 »

Arkadaşlar Allah sizlerden razı olsun işiniz gücünüz her daim olsun. Paylaştıklarınız sayesinde işlerimiz yolunda gidiyor.
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Delphi de string parçalama

Mesaj gönderen SimaWB »

Yeri gelmişken ben de burada basit bir kod paylaşayım bu konu ile alakalı.

Mesela elimizdeki string'i boşluk'lara göre parçalamak istiyoruz:

Kod: Tümünü seç

var
  SL: TStringList;
begin
  SL := TStringList.Create;
  try
    SL.Delimiter := ' ';//Boşluk
    SL.DelimitedText := 'ali veli';
    //Bundan sonra elimizde boşluklara göre ayrılmış halde string mevcuttur.
    //SL.Strings[0] ali 
    //SL.Strings[1] veli olmuştur
    //SL.Count parça sayısını verir
    //vs....    
  finally
    SL.Free;
  end;
end;
Tabiki boşluk yerine başka karakter de kullanılabilir.

Belki bilmeyenlerin işine yarayabilir :roll:
There's no place like 127.0.0.1
Cevapla