 
                
                1511 posts
                
                    
                        Location
                        Pennsylvania
                    
                
             
            
                Posted 26 February 2013 - 03:41 PM
                I'm pretty darn tired and i'm sure i'm derping really hard. Here is my code:
local handle = io.open("test","r")
local line = handle:lines()
local data = {} --A table which will later store all lines collected from the file
repeat
  table.insert(data,line)
  line = handle:lines() --Will iterate over all lines in the file
until line == nil --Will continue to insert data into the table until nil
handle:close()
stringData = print(tostring(data))
print(stringData)
bannedStrings = {
".EnderOS/.userInfo",
".EnderOS/.passInfo"
}
for i = 1,2 do
  match = string.find(data,bannedStrings[i])
  if match ~= nil then
	return error("There is a banned string in here!")
  else
	return print("No banned strings detected")
  end
end
Pretty much, it is not iterating correctly and I eventually got this :)/> (Pretty proud for doing this btw)
[attachment=1035:Capture.PNG]
If anyone can point out where i'm incorrectly iterating the file lines that would be amazing.
print(stringData)
 is for debugging (Forgot to take it out)
 
         
        
        
            
            
                
                     
                
                1214 posts
                
                    
                        Location
                        The Sammich Kingdom
                    
                
             
            
                Posted 26 February 2013 - 03:45 PM
                This is the code I use a lot of the time:
f = fs.open("/file", "r")
local line = f.readLine()
local data = {}
while line do
  table.insert(data, line) 
  line = f.readLine()
end
f.close()
for k,v in pairs(data) do
  print(v)
end
 
         
        
        
            
            
                
                     
                
                1511 posts
                
                    
                        Location
                        Pennsylvania
                    
                
             
            
                Posted 26 February 2013 - 03:47 PM
                This is the code I use a lot of the time:
f = fs.open("/file", "r")
local line = f.readLine()
local data = {}
while line do
  table.insert(data, line)
  line = f.readLine()
end
f.close()
for k,v in pairs(data) do
  print(v)
end
While loop eh, never thought of that. Thanks! ;)/>
 
         
        
        
            
            
                
                     
                
                1190 posts
                
                    
                        Location
                        RHIT
                    
                
             
            
                Posted 26 February 2013 - 04:17 PM
                Why are you iterating over every line instead of just using f.readAll() and then using the string.find() operation on that? Seams much easier for this.
                
             
         
        
        
            
            
                
                     
                
                1511 posts
                
                    
                        Location
                        Pennsylvania
                    
                
             
            
                Posted 26 February 2013 - 04:21 PM
                Why are you iterating over every line instead of just using f.readAll() and then using the string.find() operation on that? Seams much easier for this.
Got my code working:
local lineNum = 0
f = fs.open("/test", "r")
local line = f.readLine()
local data = {}
while line do
  table.insert(data, line)
  line = f.readLine()
  lineNum = lineNum+1
end
f.close()
print(lineNum)
sleep(4)
bannedStrings = {
".EnderOS/.userInfo",
".EnderOS/.passInfo"
}
for i = 1,2 do
  match = string.find(data[lineNum],bannedStrings[i])
  if match ~= nil then
	return error("There is a banned string in here!")
  else
	return print("No banned strings detected")
  end
end
I guess I could have done it that way, but who doesn't like a challenge at 10:24 PM? ;)/>
EDIT: Also by doing it this way, I can detect how many lines are in a file (Not sure if you can the other way using f.readAll())
 
         
        
        
            
            
                
                     
                
                997 posts
                
                    
                        Location
                        Wellington, New Zealand
                    
                
             
            
                Posted 26 February 2013 - 04:44 PM
                Here's a neat trick:
f = fs.open("/test", "r")
local data = {}
for line in f.readLine do
  table.insert(data, line)
end
f.close()
 
         
        
        
            
            
                
                     
                
                1511 posts
                
                    
                        Location
                        Pennsylvania
                    
                
             
            
                Posted 26 February 2013 - 06:05 PM
                Here's a neat trick:
f = fs.open("/test", "r")
local data = {}
for line in f.readLine do
  table.insert(data, line)
end
f.close()
I thought I could do something like that. Thanks for confirming. Now just to test. I most likely will use f.readAll since it is obviously the superior choice.