⭐🚀 TkyNET | Blacklist ve Profesyonel DDoS Korumalı TeamSpeak 3 Sunucuları 🚀⭐
Sponsor Görsel
🇹🇷 TR Lokasyon | 🛡️ Gelişmiş DDoS Koruması | ⚡ Düşük Ping | 🎧 Kesintisiz TS3 | Hostlar
Sponsor Görsel 2
SponsorSponsor

Dosyadan İstediğimiz Satırı Silme İşlemi

Konu

#1
Dosyadan istediğimiz satırı silerken write_file kullanmak yerine tek bir stock ile bunu daha pratik hâle getirebiliyoruz. İlk başlarda zor gelse de alışınca çok daha kolay olduğunu anlayacaksınız. write_file kullanmamamızın nedeni artık tercih edilmemesidir.
PHP Kod:
#include <amxmodx>

//Bir şeyleri kayıt ettiğimiz dosyamız (steamid olarak anlatacağım.)
new const g_szFileName[] = "addons/amxmodx/configs/steamid.ini"

//Rastgele bir public üzerinden anlatacağım.
public steamidsildigimizpublic() {
    
//Burada oluşturduğumuz komutu kullanıyoruz.
    //RemoveLine(dosya adı, sileceğimiz bölüm)
    
RemoveLine(g_szFileName"STEAM_0:00000000000000");

    
//Bunu fmt ile de yapabilirsiniz örneğin
    //Sunucudaki bütün oyuncuların steamidlerini dosyadan sileceğiz.
    //32 lik döngü oluşturup bu RemoveLine komutu kullanacağız.
    //Bütün oyuncuları çekmeyi anlatmıştım.
    //Authidlerini almak için yeni bir değişken oluşturuyoruz.
    
for(new pPlayer 1szAuthid[MAX_AUTHID_LENGTH]; pPlayer <= MaxClientspPlayer++) {
        if(!
is_user_connected(pPlayer)) {
            continue;
        }

        
//Authidlerini değere çektik
        
get_user_authid(pPlayerszAuthidcharsmax(szAuthid));
        
//Dosyadan authidsini sildik.
        
RemoveLine(g_szFileNameszAuthid);
    }
}

//Şimdi asıl yere gelelim. Dosyadan yazı silme stocku.
//Stock olarak da kullanabilirsiniz, stocku silip başına bir şey yazmadan da, fark etmez.
stock RemoveLine(const szFileName[], const szOldLine[]) {
    
//Değerleri aktarmak için yeni bir dosya oluşturacağız.
    //Bu dosyanın yeri, kayıt ettiğiniz dosya yeriyle aynı olmalı
    //Yani kayıt ettiğiniz dosya addons/amxmodx/configs içindeyse diğeri de orada olmalı.
    
new const szTempFile[] = "addons/amxmodx/configs/tempfile.ini";

    
//Kayıt ettiğiniz dosyayı okutuyoruz. Sadece okumak için açtığımız için rt kullanıyoruz.
    
new iFile fopen(szFileName"rt");

    if(
iFile) {
        
//Şimdi kayıtlı authidleri kaydedeceğimiz geçici dosyayı oluşturuyoruz ve okutuyoruz.
        //Böyle bir dosya olmadığı için kendisi otomatik oluşturacak ve üstüne yazacak, bu yüzden wt

        
new iTempFile fopen(szTempFile"wt");

        if(
iTempFile) {
            
//Authidleri çekmek için 128lik yeni bir değişken oluşturuyoruz.
            
new szBuffer[MAX_FMT_LENGTH];

            
//Şimdi authidlerin olduğu dosyayı açıp, içindekileri bu değere atıyoruz.
            
while(fgets(iFileszBuffercharsmax(szBuffer))) {
                
trim(szBuffer);

                
//Boş satırı ve sileceğimiz authidyi burada boş geçiyoruz.
                
if(szBuffer[0] == EOS || equali(szBufferszOldLine)) {
                    continue;
                }

                
//Şimdi bu atadığımız değerleri geçici dosyaya aktarıyoruz.
                //Satır atlamak için sonuna ^n koyuyoruz yoksa hepsi tek satırda olur.
                
fprintf(iTempFile"%s^n"szBuffer);
            }

            
//Şimdi dosyaları kapatıyoruz.
            
fclose(iFile);
            
fclose(iTempFile);

            
//Eski dosyayı siliyoruz
            
delete_file(iFile);
            
//Geçici olarak oluşturduğumuz dosyanın ismini eski dosyanın ismiyle değiştiriyoruz.
            //Bu sayede dosya ismimiz aynı kalıyor fakat silmek istediğimiz authidyi silmiş oluyoruz.
            
rename_file(szFileNameszTempFile1);
        }
    }

Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da