function'dan geriye iki değer dönermi?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
kahraman1285
Üye
Mesajlar: 360
Kayıt: 10 Nis 2006 09:07

function'dan geriye iki değer dönermi?

Mesaj gönderen kahraman1285 »

Mrb.

TcpClienttan gelen string paketi ayrıştırmak için BilgiyiAl diye bir function yazdım ama ben bu functiondan geriye iki değer döndürmek istiyorum.

Kod: Tümünü seç

var
  KalanMesaj:string;

function TForm1.BilgiyiAl(GelenBilgi: string): string;
var
Sonuc:string;
BasYeri:Smallint;
begin
BasYeri:=pos('//',GelenBilgi);
if BasYeri > 0 then
  begin
    Sonuc:=copy(GelenBilgi,0,BasYeri-1);
    Result:=copy(GelenBilgi,0,BasYeri-1);
  end;
KalanMesaj:=copy(GelenBilgi,basyeri+2,length(GelenBilgi) - BasYeri + 2);
end;
amacım buradaki KalanMesaj değişkenini function sonucu olarak geriye döndürmek yani bu function sonucunda hem // işareti arasındaki istediğim, ihtiyacım olan bilgiyi almak istiyorum hemde // işareti sonrasında geriye kalan bilgiyi almak istiyorum bu iki değeri tek bir functiondan geriye döndürebilirmiyim? Bu mümkün mü?

Kod: Tümünü seç

procedure TForm1.YeniUyeKaydiniYap;
begin
IBTable1.insert;
IBTable1KULLANICIADI.value:=BilgiyiAl(kalanmesaj);
IBTable1E_MAIL.Value:=BilgiyiAl(kalanmesaj);
IBTable1TEL.Value:=BilgiyiAl(KalanMesaj);
IBTable1.Post;
end;

procedure TForm1.TcpServerOnEXecute(AThread: TIdPeerThread);
var
GelenMesaj,DonenSonuc:string;
begin
GelenMesaj:='Yeni Üye//Ahmet yılmaz//birisi@hotmail.com//0262254666//';

DonenSonuc:=BilgiyiAl(GelenMesaj);
if  DonenSonuc='Yeni Üye' then
  begin
      YeniUyeKaydiniYap(KalanMesaj);
  end;

end;
[/b][/code]
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Mesaj gönderen unicorn64 »

forumda arama yaparak :ara daha çabuk istediğine ulaşabilirsin.

http://delphiturkiye.com/forum/viewtopi ... highlight= buraya bi bak istersen. olmazsa tekrar yazarsın
mcihad
Üye
Mesajlar: 283
Kayıt: 18 Tem 2003 03:28
Konum: Sivas

Mesaj gönderen mcihad »

record tanımlarsın

Kod: Tümünü seç

TMusteri=record
 ad:String;
 soyad:String;
end;
gibi.
Fonksiyonun dönüş değerinede bunu ayarlarsın olur.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a
fonksiyonda tanımladığın parametrenin başına var koyarak yapabilirsin
şöyle

Kod: Tümünü seç

function TForm1.BilgiyiAl(var GelenBilgi: string): string;
var
Sonuc:string;
BasYeri:Smallint;
begin
BasYeri:=pos('//',GelenBilgi);
if BasYeri > 0 then
  begin
    Sonuc:=copy(GelenBilgi,0,BasYeri-1);
    Result:=copy(GelenBilgi,0,BasYeri-1);
  end;
gelenbilgi:=copy(GelenBilgi,basyeri+2,length(GelenBilgi) - BasYeri + 2);
end;
kolay gelsin
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Mesaj gönderen unicorn64 »

bende aynı şeyleri söyledim :lol:
ama birazcık :ara vurgu yapmak istedim :ara :!:
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

@aslangeri nin dediği gibi VAR bir değişkenle döndürülebileceği gibi KAYIT (record) tipinde bir sonuca (result) atama da yapılabilir :wink:

Kod: Tümünü seç

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

type
  TKayit = record
    AdiSoyad: string;
    Telefon: Integer;
  end;
Var
  Kayit: TKayit;

procedure TForm1.Button1Click(Sender: TObject);

function Deneme(Param1, Param2: string): TKayit;
begin
  Result.AdiSoyad := Param1;
  Result.Telefon := 1234567;
end;

begin
  ShowMessage( Deneme('ALİ', 'Veli').AdiSoyad + ' ->> ' + IntToStr( Deneme('ALİ', 'Veli').Telefon) );
end;

end.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla