Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

[ROZWIĄZANE] Usunięcie pustych linijek


Najlepsza odpowiedź DarkGL, 15.01.2014 00:25

stock usunPusteLinie( filePathName[] ) {
	
	if( !file_exists( filePathName ) ){
		return ;
	}
	
	new fileNameTmp[ 256 ],
		counterFile = 0;
	
	do {
		formatex( fileNameTmp ,charsmax( fileNameTmp ), "%sTmp%d" , filePathName , ++counterFile );
	} while( file_exists( fileNameTmp ) )
 
	new szLine[128],
		iLen;
	
	for(new i = 0; read_file( filePathName, i, szLine, charsmax( szLine ), iLen ); i++) {
		trim( szLine );
		
		if ( equali( szLine , "") )
			continue;
		
		write_file( fileNameTmp , szLine );
	}

	unlink( filePathName );

	rename_file( fileNameTmp , filePathName , 1 );
}
Nie kompilowałem Przejdź do postu


  • Zamknięty Temat jest zamknięty
7 odpowiedzi w tym temacie

#1 SeeK

    Wszechobecny

  • Użytkownik

Reputacja: 192
Profesjonalista

  • Postów:438
Offline

Napisano 11.01.2014 01:17

Mógłby ktoś napisać funkcję, która usuwałaby wszystkie puste linijki z pliku? Bo wszystkie pomysły, które przychodzą mi do głowy są strasznie nieoptymalne np. wczytanie całego pliku po linijce do tablicy ( nie wczytywanie pustych linii ), a następnie nadpisanie pliku. Ma ktoś może lepszy pomysł?


  • +
  • -
  • 0
https://sklep-sms.pl - Sklep SMS pozwala zarabiać na swoich serwerach gier opartych o silniki AMX Mod X oraz SOURCEMOD
https://nalunch.com - A Ty, gdzie pójdziesz dziś na lunch?

#2 K!113r

    Teraz to chyba Sławek kek

  • Power User

Reputacja: 387
Wszechpomocny

  • Postów:868
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Piotrków Tryb.
Offline

Napisano 11.01.2014 02:36

Wczytać plik to chyba i tak musisz, więc nie wiem po co kombinować.


  • +
  • -
  • 0

DarkGL to mój autorytet.

skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować


#3 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 11.01.2014 02:53

Najlepszym rozwiązaniem chyba będzie po prostu od razu wczytywać i zapisywać kolejno nie puste linijki, czyli jeden plik otwieramy, a drugi tworzymy i zapisujemy w nim linijki po spełnieniu warunku. Po wszystkim wystarczy zamienić plik na ten tymczasowy. Tym oto sposobem, nie potrzeba tworzyć żadnej tablicy.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#4 SeeK

    Wszechobecny

  • Autor tematu
  • Użytkownik

Reputacja: 192
Profesjonalista

  • Postów:438
Offline

Napisano 13.01.2014 21:13

Czyli tworze nowy plik, wypełniam go niepustymi linijkami, usuwam stary, zmieniam nazwę nowego pliku na stary tak? :)


Użytkownik SeeK edytował ten post 13.01.2014 21:13

  • +
  • -
  • 1
https://sklep-sms.pl - Sklep SMS pozwala zarabiać na swoich serwerach gier opartych o silniki AMX Mod X oraz SOURCEMOD
https://nalunch.com - A Ty, gdzie pójdziesz dziś na lunch?

#5 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 14.01.2014 22:26

Tak. W sumie chyba nie trzeba nic nawet usuwać, tylko podmienić nazwę nowego pliku na nazwę tego starego.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#6 SeeK

    Wszechobecny

  • Autor tematu
  • Użytkownik

Reputacja: 192
Profesjonalista

  • Postów:438
Offline

Napisano 14.01.2014 23:01

Podaje stock, jakby komuś się miał przydać. Jest z usuwaniem starego pliku, nie testowałem bez.

stock usunPusteLinie(sciezka[]) {
new zastepcza[64], licznik = 0
do {
formatex(zastepcza,charsmax(zastepcza),"%s%d",sciezka,licznik)
++licznik
} while( file_exists(zastepcza) )
 
new szLine[128], iLen;
for(new i=0; read_file(sciezka, i, szLine, charsmax(szLine), iLen); i++) {
trim(szLine);
// pusta linia
if (!szLine[0]) continue;
 
write_file(sciezka,szLine,-1)
}
//Usuwa stary plik
unlink(sciezka)
//Zmienia nazwe tymczasowego pliku na stary plik
rename_file(zastepcza,sciezka,1)
}

  • +
  • -
  • 0
https://sklep-sms.pl - Sklep SMS pozwala zarabiać na swoich serwerach gier opartych o silniki AMX Mod X oraz SOURCEMOD
https://nalunch.com - A Ty, gdzie pójdziesz dziś na lunch?

#7 SeeK

    Wszechobecny

  • Autor tematu
  • Użytkownik

Reputacja: 192
Profesjonalista

  • Postów:438
Offline

Napisano 14.01.2014 23:46

W tamtym stocku był błąd. Zamiast write_file(sciezka,szLine,-1) powinno byc write_file(zastepcza,szLine,-1). Ponadto sprawdziłem i jeżeli nie usuniesz starego pliku, to nie zmieni wtedy nazwy nowego pliku na ten stary. 

 

Ten kod już powinien działać prawidłowo.

stock usunPusteLinie(sciezka[]) {
new zastepcza[64], licznik = 0
do {
formatex(zastepcza,charsmax(zastepcza),"%d",licznik)
++licznik
} while( file_exists(zastepcza) )
 
new szLine[128], iLen;
for(new i=0; read_file(sciezka, i, szLine, charsmax(szLine), iLen); i++) {
trim(szLine);
// pusta linia
if (equali(szLine,""))
continue;
 
write_file(zastepcza,szLine,-1)
}
//Usuwa stary plik
unlink(sciezka)
//Zmienia nazwe tymczasowego pliku na stary plik
rename_file(zastepcza,sciezka,1)
}

Użytkownik SeeK edytował ten post 14.01.2014 23:47

  • +
  • -
  • 0
https://sklep-sms.pl - Sklep SMS pozwala zarabiać na swoich serwerach gier opartych o silniki AMX Mod X oraz SOURCEMOD
https://nalunch.com - A Ty, gdzie pójdziesz dziś na lunch?

#8 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 981
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 15.01.2014 00:25   Najlepsza odpowiedź

stock usunPusteLinie( filePathName[] ) {
	
	if( !file_exists( filePathName ) ){
		return ;
	}
	
	new fileNameTmp[ 256 ],
		counterFile = 0;
	
	do {
		formatex( fileNameTmp ,charsmax( fileNameTmp ), "%sTmp%d" , filePathName , ++counterFile );
	} while( file_exists( fileNameTmp ) )
 
	new szLine[128],
		iLen;
	
	for(new i = 0; read_file( filePathName, i, szLine, charsmax( szLine ), iLen ); i++) {
		trim( szLine );
		
		if ( equali( szLine , "") )
			continue;
		
		write_file( fileNameTmp , szLine );
	}

	unlink( filePathName );

	rename_file( fileNameTmp , filePathName , 1 );
}
Nie kompilowałem
GwynBleidD (16.01.2014 18:20):
Przecież kompilator masz w głowie :D
DarkGL (16.01.2014 18:24):
:cfaniak:

  • +
  • -
  • 1




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych