Visual Studio Code İçinde Class Kullanma

Merhaba;
Visual Studio Code üzerinde PlatformIO eklentisi ile proje geliştiriyorum.
Kodlarımı ve ler içine alarak sınıflara ayırdığımda hata alıyorum. Muhtemelen kod öncelik sırası hatası. Bunu nasıl çözebilirim?

— Hata kodum–
PACKAGES:

  • framework-arduinoespressif8266 @ 3.30002.0 (3.0.2)
  • tool-esptool @ 1.413.0 (4.13)
  • tool-esptoolpy @ 1.30000.201119 (3.0.0)
  • toolchain-xtensa @ 2.100300.210717 (10.3.0)
    LDF: Library Dependency Finder → Library Dependency Finder (LDF) — PlatformIO latest documentation
    LDF Modes: Finder ~ chain, Compatibility ~ soft
    Found 35 compatible libraries
    Scanning dependencies…
    Dependency Graph
    |-- ESP8266HTTPClient @ 1.2
    | |-- ESP8266WiFi @ 1.0
    |-- ESP8266WiFi @ 1.0
    Building in release mode
    Compiling .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o
    Linking .pio\build\nodemcuv2\firmware.elf
    c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/…/lib/gcc/xtensa-lx106-elf/10.3.0/…/…/…/…/xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\LedIslemleri.cpp.o:(.bss.ledBeklemeSonZaman+0x0): multiple definition of ledBeklemeSonZaman'; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.bss.ledBeklemeSonZaman+0x0): first defined here c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\LedIslemleri.cpp.o:(.data.ledBeklemeSuresi+0x0): multiple definition of ledBeklemeSuresi’; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.data.ledBeklemeSuresi+0x0): first defined
    here
    c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/…/lib/gcc/xtensa-lx106-elf/10.3.0/…/…/…/…/xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\LedIslemleri.cpp.o:(.bss.butonBasmaSayisi+0x0): multiple definition of butonBasmaSayisi'; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.bss.butonBasmaSayisi+0x0): first defined here c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\LedIslemleri.cpp.o:(.bss.butonOncekiDurum+0x0): multiple definition of butonOncekiDurum’; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.bss.butonOncekiDurum+0x0): first defined here
    c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/…/lib/gcc/xtensa-lx106-elf/10.3.0/…/…/…/…/xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\LedIslemleri.cpp.o:(.bss.butonDurumu+0x0): multiple definition of butonDurumu'; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.bss.butonDurumu+0x0): first defined here c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\LedIslemleri.cpp.o:(.data.butonBasmaBeklemeSuresi+0x0): multiple definition of butonBasmaBeklemeSuresi’; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.data.butonBasmaBeklemeSuresi+0x0): first defined here
    c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/…/lib/gcc/xtensa-lx106-elf/10.3.0/…/…/…/…/xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\LedIslemleri.cpp.o:(.bss.butonSonBasmaZamani+0x0): multiple definition of butonSonBasmaZamani'; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.bss.butonSonBasmaZamani+0x0): first defined here c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\LedIslemleri.cpp.o:(.data.timerDelay+0x0): multiple definition of timerDelay’; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.data.timerDelay+0x0): first defined here
    c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/…/lib/gcc/xtensa-lx106-elf/10.3.0/…/…/…/…/xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\LedIslemleri.cpp.o:(.bss.lastTime+0x0): multiple definition of lastTime'; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.bss.lastTime+0x0): first defined here c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\Tanimlamalar.cpp.o:(.bss.ledBeklemeSonZaman+0x0): multiple definition of ledBeklemeSonZaman’; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.bss.ledBeklemeSonZaman+0x0): first defined here
    c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/…/lib/gcc/xtensa-lx106-elf/10.3.0/…/…/…/…/xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\Tanimlamalar.cpp.o:(.data.ledBeklemeSuresi+0x0): multiple definition of ledBeklemeSuresi'; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.data.ledBeklemeSuresi+0x0): first defined here c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\Tanimlamalar.cpp.o:(.bss.butonOncekiDurum+0x0): multiple definition of butonOncekiDurum’; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.bss.butonOncekiDurum+0x0): first defined here
    c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/…/lib/gcc/xtensa-lx106-elf/10.3.0/…/…/…/…/xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\Tanimlamalar.cpp.o:(.bss.butonDurumu+0x0): multiple definition of butonDurumu'; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.bss.butonDurumu+0x0): first defined here c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\Tanimlamalar.cpp.o:(.bss.butonBasmaSayisi+0x0): multiple definition of butonBasmaSayisi’; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.bss.butonBasmaSayisi+0x0): first defined here
    c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/…/lib/gcc/xtensa-lx106-elf/10.3.0/…/…/…/…/xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\Tanimlamalar.cpp.o:(.data.butonBasmaBeklemeSuresi+0x0): multiple definition of butonBasmaBeklemeSuresi'; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.data.butonBasmaBeklemeSuresi+0x0): first defined here c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\Tanimlamalar.cpp.o:(.bss.butonSonBasmaZamani+0x0): multiple definition of butonSonBasmaZamani’; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.bss.butonSonBasmaZamani+0x0): first defined here
    c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/…/lib/gcc/xtensa-lx106-elf/10.3.0/…/…/…/…/xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\Tanimlamalar.cpp.o:(.data.timerDelay+0x0): multiple definition of timerDelay'; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.data.timerDelay+0x0): first defined here c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\Tanimlamalar.cpp.o:(.bss.lastTime+0x0): multiple definition of lastTime’; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.bss.lastTime+0x0): first defined here
    c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/…/lib/gcc/xtensa-lx106-elf/10.3.0/…/…/…/…/xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\main.cpp.o:(.bss.butonSonBasmaZamani+0x0): multiple definition of butonSonBasmaZamani'; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.bss.butonSonBasmaZamani+0x0): first defined here c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\main.cpp.o:(.data.butonBasmaBeklemeSuresi+0x0): multiple definition of butonBasmaBeklemeSuresi’; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.data.butonBasmaBeklemeSuresi+0x0): first defined here
    c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/…/lib/gcc/xtensa-lx106-elf/10.3.0/…/…/…/…/xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\main.cpp.o:(.bss.butonBasmaSayisi+0x0): multiple definition of butonBasmaSayisi'; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.bss.butonBasmaSayisi+0x0): first defined here c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\main.cpp.o:(.bss.butonDurumu+0x0): multiple definition of butonDurumu’; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.bss.butonDurumu+0x0): first defined here
    c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/…/lib/gcc/xtensa-lx106-elf/10.3.0/…/…/…/…/xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\main.cpp.o:(.bss.LedIslem+0x0): multiple definition of LedIslem'; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.bss.LedIslem+0x0): first defined here c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\main.cpp.o:(.bss.butonOncekiDurum+0x0): multiple definition of butonOncekiDurum’; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.bss.butonOncekiDurum+0x0): first defined here
    c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/…/lib/gcc/xtensa-lx106-elf/10.3.0/…/…/…/…/xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\main.cpp.o:(.bss.HostAyarlari+0x0): multiple definition of HostAyarlari'; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.bss.HostAyarlari+0x0): first defined here c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\main.cpp.o:(.bss.ledBeklemeSonZaman+0x0): multiple definition of ledBeklemeSonZaman’; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.bss.ledBeklemeSonZaman+0x0): first defined herec:/users/asg5/.platformio/packages/toolchain-xtensa/bin/…/lib/gcc/xtensa-lx106-elf/10.3.0/…/…/…/…/xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\main.cpp.o:(.data.ledBeklemeSuresi+0x0): multiple definition of ledBeklemeSuresi'; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.data.ledBeklemeSuresi+0x0): first defined here c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\main.cpp.o:(.data.timerDelay+0x0): multiple definition of timerDelay’; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.data.timerDelay+0x0): first defined here
    c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/…/lib/gcc/xtensa-lx106-elf/10.3.0/…/…/…/…/xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\main.cpp.o:(.bss.lastTime+0x0): multiple definition of lastTime'; .pio\build\nodemcuv2\src\HTTPIslemleri.cpp.o:(.bss.lastTime+0x0): first defined here c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\main.cpp.o:(.text.loop+0x20): undefined reference to _ZN12LedIslemleri18LedSistemCalisiyorEv’
    c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/…/lib/gcc/xtensa-lx106-elf/10.3.0/…/…/…/…/xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\main.cpp.o:(.text.loop+0x28): undefined reference to _ZN12LedIslemleri19LedHttpGonderiliyorEv' c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\main.cpp.o: in function loop’:
    main.cpp:(.text.loop+0x69): undefined reference to _ZN12LedIslemleri18LedSistemCalisiyorEv' c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: main.cpp:(.text.loop+0x9d): undefined reference to _ZN12LedIslemleri19LedHttpGonderiliyorEv’
    collect2.exe: error: ld returned 1 exit status
    *** [.pio\build\nodemcuv2\firmware.elf] Error 1
    ====================================================================== [FAILED] Took 4.09 seconds ======================================================================

This error appears when you put global variables in a .h file which is included by multiple .cpp files, causing the same global variable to be created in multiple files, which is not allowed.

E.g., my_header.h

#ifndef _MY_HEADER_H
#define _MY_HEADER_H

int myGlobalVariable = 123; // **WRONG**

#endif

When it should be

my_header.h

#ifndef _MY_HEADER_H
#define _MY_HEADER_H

extern int myGlobalVariable; // CORRECT DECLARTION

#endif

And then in some cpp file, e.g., global_vars.cpp, the global variable needs to be defined once.

#include "my_header.h"

int myGlobalVariable = 123; // CORRECT DEFINITION (ONLY ONE TIME)

#endif

See Multiple definitions of... error | first defined here... Build Failure.

This error can also occur without an intermediate .h file when two .cpp files try to create the same global variable.

file_1.cpp

#include <Arduino.h>
//..
int myGlobalVariable = 123; // first definition of global var

file_2.cpp

#include <Arduino.h>
//..
int myGlobalVariable = 123; // **WRONG**, second definition of global var ==> multiple definition error

When it should be

file_2.cpp

#include <Arduino.h>
//:.
extern int myGlobalVariable; // OK, share same global variable with file_1

Hızlı geri dönüş için teşekkür ederim. Aslında sizin yaptığınız gibi kullanıyorum. Burda yaşadığım sorun aslında Class ların birbiri içinde kullanılması. Her class içinde ortak kullanılan tanımlamalar var. main.cpp içinde de bu class ları #include edip kullanmak istiyorum, ancak platformio buna müsade etmiyor.

örneğin “a.h” dosyası hem “x.h” hemde “y.h” dosyasında kullanılıyor. aynı zamanda “x.h” içinde de “y.h” ve “a.h” dosyaları kullanılıyor. tüm bu dosyalara aynı zamanda main.cpp içinde de kullanmak için #include edildiğinde ve birbiri içinde tanımlı oldukları için derleme aşamasında hata veriyor. bu sorunu nasıl aşabilirim?

Not:Dil için kusura bakmayın. Google translate ile çevirebilirmisiniz.

Tam anlayabilmek için başka yeni bir proje başlattım ve benzer bir uygulama yaptım. Benim gibi bu sorun hakkında araştırma yapanlar için bu uygulamadaki sorunu gösterirseniz çok memnun olurum.
Link: https://1drv.ms/u/s!AgroQFY_tL03kHqnRFa0YPMHgRD_?e=07aIAU

//manin.cpp----------
#include <Arduino.h>
#include <yazdir.h>
#include <lambaYak.h>

yazdir yazdirt;
lambaYak lambaYaktir;
void setup()
{

  yazdirt.portAc();
  lambaYaktir.LambaYaniyor();


}

void loop()
{

  String deger = yazdirt.bilgiDon();

  Serial.print(deger);

  yazdirt.bilgiEkle();


lambaYaktir.LambaYanSon();

}
//yazdir.cpp----------
#include "yazdir.h"
#include "Arduino.h"

int globalDeger=123 ; // CORRECT DEFINITION (ONLY ONE TIME)


void yazdir::portAc()
{
    Serial.begin(115200);
    Serial.print("115200 Baudrade hızında port açıldı.");
}

void yazdir::bilgiEkle()
{
Serial.print("Bilgi eklendi.");
}

String yazdir::bilgiDon()
{
    return "İşlem başarılı.";
}
//lambaYak.cpp----------
#include "lambaYak.h"
#include "Arduino.h"

#include "yazdir.h"

yazdir yazdirt;

String lambaYak::LambaSondu()
{

    Serial.print("Lamba Söndü");
    String bilgi = yazdirt.bilgiDon();
    return bilgi;
}

void lambaYak::LambaYanSon()
{
    Serial.print("Bilgi eklendi.");
    String bilgi = yazdirt.bilgiDon();
    Serial.print(bilgi);
}

String lambaYak::LambaYaniyor()
{
    return "xxx bilgisi döndü.";
    String bilgi = yazdirt.bilgiDon();
    return bilgi;
}
//lambaYak.h----------
#ifndef lambaYak_h
#define lambaYak_h

#include <Arduino.h>



class lambaYak
{
private:
public:
    String LambaYaniyor();
    String LambaSondu();
    void LambaYanSon();
};

#endif
//yazdir.cpp----------
#include "yazdir.h"
#include "Arduino.h"

int globalDeger=123 ; // CORRECT DEFINITION (ONLY ONE TIME)


void yazdir::portAc()
{
    Serial.begin(115200);
    Serial.print("115200 Baudrade hızında port açıldı.");
}

void yazdir::bilgiEkle()
{
Serial.print("Bilgi eklendi.");
}

String yazdir::bilgiDon()
{
    return "İşlem başarılı.";
}
//yazdir.h----------
#ifndef yazdir_h
#define yazdir_h

#include <Arduino.h>

extern int globalDeger; // CORRECT DECLARTION

class yazdir
{
private:
public:
    //yazdir(int deger);
    String bilgiDon();
    void portAc();
    void bilgiEkle();
};

#endif

Building in release mode
Compiling .pio\build\nodemcuv2\src\main.cpp.o
Linking .pio\build\nodemcuv2\firmware.elf
c:/users/asg5/.platformio/packages/toolchain-xtensa/bin/…/lib/gcc/xtensa-lx106-elf/10.3.0/…/…/…/…/xtensa-lx106-elf/bin/ld.exe: .pio\build\nodemcuv2\src\main.cpp.o:(.bss.yazdirt+0x0): multiple definition of `yazdirt’; .pio\build\nodemcuv2\src\lambaYak.cpp.o:(.bss.yazdirt+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
*** [.pio\build\nodemcuv2\firmware.elf] Error 1
================================================================================================== [FAILED] Took 2.76 seconds

Teşekkürler.

Bunun nedeni hem lambaYak.cpp hem de main.cpp dosyalarında yazdir yazdirt global değişkeninin yaratılmış olmasıdır.

Her lambdaYak nesnesinin yerine bir yazdir nesnesi olması gerekiyor gibi görünüyor? İstediğiniz buysa, yazdir.h dosyasını lambda.yak dosyasına dahil edebilir ve public bölümünde bir yazdir yazdirt; verebilirsiniz, ardından lambdaYak.cpp sınıf kodunda bu nesneye this->yazdirt olarak referans verebilirsiniz. Bu şekilde oluşturulan her lambaYak nesnesi otomatik olarak içinde kullanabileceği kendi yazdir nesnesine sahip olur.

Bakınız: Deleted

Eğer tüm lambaYak nesnelerinin aynı yazdir nesnesini kullanmasını istiyorsanız, o zaman lambaYak.cpp içinde oluşturmanızda bir sakınca yoktur, ancak main.cpp içinde yazdir yazdirt değişkenini yeniden oluşturmak yerine, zaten var olan değişkene referans vermek için extern yazdir yazdirt; demeniz yeterlidir.

main.cpp içinde:

/* only reference one global yazdirt object, already created in lambaYak.cpp*/
extern yazdir yazdirt;
lambaYak lambaYaktir;

Ayrıca lambdaYak kurucusunu bir yazdir nesnesine işaretçi alacak şekilde değiştirebilirsiniz, böylece farklı yazdir nesnelerini ayrı ayrı oluşturabilir ve bunları bir veya birden fazla lamdbaYak nesnesine atayabilirsiniz.

[Translated with DeepL Translate: The world's most accurate translator (free version)]

Verdiğiniz bilgiler çok kıymetli. Birçok yaşadığım sorunu neden kaynaklandığını anladım. Ancak iç içe olan sınıflarda kafamda halen birtakım soru işaretleri var. Muhtemelen c# mantığıyla düşündüğüm için syntax kısmında anlamada zorluk yaşıyorum. Destekleriniz için teşekkür ederim.