Raised This Month: $51 Target: $400
 12% 

Solved Add character in existing line


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
edon1337
Penguin Enthusiast
Join Date: Jun 2016
Location: Macedonia
Old 08-14-2018 , 06:36   Add character in existing line
Reply With Quote #1

I'm trying to add a character in front of an existing string, and then replace the old line inside the file with the new edited one.

For example:

Current:
PHP Code:
"Rabbit" 
Edited:
PHP Code:
;"Rabbit" 
Any idea?
__________________

Last edited by edon1337; 08-14-2018 at 08:38.
edon1337 is offline
HamletEagle
AMX Mod X Plugin Approver
Join Date: Sep 2013
Location: Romania
Old 08-14-2018 , 06:45   Re: Add character in existing line
Reply With Quote #2

It's not very hard:
1.Create a temporary file.
2.Open the original file and read line by line.
3.Write all lines from the original file to the temporary file exactly how they are, except the desired line, which you edit and then write.
4.Delete the original file.
5.Rename the temporary file to the original name.
__________________

Last edited by HamletEagle; 08-14-2018 at 06:45.
HamletEagle is offline
edon1337
Penguin Enthusiast
Join Date: Jun 2016
Location: Macedonia
Old 08-14-2018 , 06:49   Re: Add character in existing line
Reply With Quote #3

Quote:
Originally Posted by HamletEagle View Post
It's not very hard:
1.Create a temporary file.
2.Open the original file and read line by line.
3.Write all lines from the original file to the temporary file exactly how they are, except the desired line, which you edit and then write.
4.Delete the original file.
5.Rename the temporary file to the original name.
I'm aware of that already, but isn't there another way?
__________________
edon1337 is offline
klippy
AlliedModders Donor
Join Date: May 2013
Location: Serbia
Old 08-14-2018 , 06:53   Re: Add character in existing line
Reply With Quote #4

Quote:
Originally Posted by edon1337 View Post
I'm aware of that already, but isn't there another way?
No, that's how files work, they are streams, it's not AMXX's thing.
__________________

Last edited by klippy; 08-14-2018 at 06:53.
klippy is offline
edon1337
Penguin Enthusiast
Join Date: Jun 2016
Location: Macedonia
Old 08-14-2018 , 06:54   Re: Add character in existing line
Reply With Quote #5

Quote:
Originally Posted by KliPPy View Post
No, that's how files work, they are streams, it's not AMXX's thing.
Delete the line and write a new one at it's place?
__________________
edon1337 is offline
klippy
AlliedModders Donor
Join Date: May 2013
Location: Serbia
Old 08-14-2018 , 06:58   Re: Add character in existing line
Reply With Quote #6

Quote:
Originally Posted by edon1337 View Post
Delete the line and write a new one at it's place?
It doesn't work that way. It will only work provided the the new and old lines have the same length. As I said, files are streams, they can only be appended to or overwritten, you can't insert in the middle or delete content.
__________________

Last edited by klippy; 08-14-2018 at 07:01.
klippy is offline
edon1337
Penguin Enthusiast
Join Date: Jun 2016
Location: Macedonia
Old 08-14-2018 , 07:03   Re: Add character in existing line
Reply With Quote #7

Quote:
Originally Posted by KliPPy View Post
It doesn't work that way. It will only work provided the the new and old lines have the same length. As I said, files are streams, they can only be appended to or overwritten, you can't insert in the middle or delete content.
Ah, I see. I'll use this then, thanks https://forums.alliedmods.net/showpo...56&postcount=5
__________________
edon1337 is offline
edon1337
Penguin Enthusiast
Join Date: Jun 2016
Location: Macedonia
Old 08-14-2018 , 07:06   Re: Add character in existing line
Reply With Quote #8

There's a problem though, even with that stock, how am I supposed to add a character at the start of the text? If I replace " with ;" it will be like this
PHP Code:
;"Donii;" 
Meanwhile it should be like this
PHP Code:
;"Donii" 
__________________
edon1337 is offline
HamletEagle
AMX Mod X Plugin Approver
Join Date: Sep 2013
Location: Romania
Old 08-14-2018 , 07:10   Re: Add character in existing line
Reply With Quote #9

Quote:
Originally Posted by edon1337 View Post
There's a problem though, even with that stock, how am I supposed to add a character at the start of the text? If I replace " with ;" it will be like this
PHP Code:
;"Donii;" 
Meanwhile it should be like this
PHP Code:
;"Donii" 
That's basic string manipulation, nothing to do with files.
1.Shift all cell's content one position to the right and then overwrite the first one.
2.Use formatex in another string, like formatex(..., ..., ";%s", Line).
3.Use strcat.
__________________

Last edited by HamletEagle; 08-14-2018 at 07:10.
HamletEagle is offline
edon1337
Penguin Enthusiast
Join Date: Jun 2016
Location: Macedonia
Old 08-14-2018 , 07:25   Re: Add character in existing line
Reply With Quote #10

Quote:
Originally Posted by HamletEagle View Post
That's basic string manipulation, nothing to do with files.
1.Shift all cell's content one position to the right and then overwrite the first one.
2.Use formatex in another string, like formatex(..., ..., ";%s", Line).
3.Use strcat.
I totally forgot about formatex

Is NewLine[] purposely not used or you just forgot?
PHP Code:
stock RemoveLine(const FileName[], const OldLine[], const NewLine[])
{
    new const 
TempFileName[] = "tempfile.ini"

    
new ConfigDirPath[128]; get_configsdir(ConfigDirPathcharsmax(ConfigDirPath))
    new 
FullPath[256]; formatex(FullPathcharsmax(FullPath), "%s/%s"ConfigDirPathFileName)

    new 
FilePointer fopen(FullPath"rt")
    if(
FilePointer)
    {
        new 
TempFilePath[256]; formatex(TempFilePathcharsmax(TempFilePath), "%s/%s"ConfigDirPathTempFileName)
        
        new 
InputFilePointer fopen(TempFilePath"wt")
        if(
InputFilePointer)
        {
            new 
FileData[128]
            while(!
feof(FilePointer))
            {
                
fgets(FilePointerFileDatacharsmax(FileData))
                
trim(FileData)
                
                if(
equal(FileDataOldLine))
                {
                    continue
                }
                
fprintf(InputFilePointer"%s^n"FileData)
            }
            
            
fclose(InputFilePointer)
            
fclose(FilePointer)

            
delete_file(FullPath)
            
rename_file(TempFilePathFullPath1)
            
            return 
1
        
}
    }
    return 
0

__________________
edon1337 is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 09:12.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode