EachIn troubles
BlitzMax Forums/BlitzMax Beginners Area/EachIn troubles
| ||
Ignore me. I fixed it, I was talking rubbish, the following code works fine.Strict Type TSetting Field name:String Field val:String End Type Type TSettingsFile Field settings:TList Method New() settings = New TList End Method Method addSetting(sName:String, sVal:String) Local newSetting:TSetting = New TSetting newSetting.name = sName newSetting.val = sVal ListAddLast self.settings, newSetting End Method Method SaveToFile(sFileName:String) Local s:TSetting For s = EachIn self.settings Print s.Name + " = " + s.Val Next End Method End Type Local file:TSettingsFile = New TSettingsFile file.addSetting("swers","kk132") file.addSetting("sdsfs","kdsfk2") file.addSetting("ssdfewrs","kfdk") file.SaveToFile("") |
| ||
your problem must be somewhere else. The following code works with BM 1.06 (win beta) without any problems Strict Type TSetting Field name:String Field val:String End Type Type TSettingsFile Field settings:TList Method New() settings = New TList End Method Method SaveToFile(sFileName:String) For Local s:TSetting = EachIn settings Print s.Name + " = " + s.Val Next End Method End Type Local a:TSetting = New TSetting a.name = "bla" a.val = "trala" Local file:TSettingsFile = New TSettingsFile file.settings.addlast(a) file.savetofile ("a") Delay 2000 End |
| ||
Thanks Dremora, I have similar code that doenst work, but as what I just typed in does, I must be being stupid in my other project. Will post again if I have further issues. Cheers,a |
| ||
Ok Here is the faulty codeType tFRSetting Field id:String Field value:String End Type Type tFRFile Field id:String Field fileName:String Field settings:TList ' // Constructor // Method New() Self.settings = CreateList() End Method Function getSetting(name:String) End Function Function setSetting(name:String, newValue:Object) End Function Function loadRaw(sFileName:String) Local sLine:String Local sSettingName:String Local sSettingValue:String Local iEquals:Int Local strmFile:TStream = ReadFile(sFileName) If Not strmFile Then Print "ERROR: FileReader - No Stream for file " + sFileName Return End If While Not Eof(strmFile) sLine = ReadLine(strmFile) sLine = Trim(sLine) If Left(sLine,1) <> ";" Then iEquals = Instr(sLine, "=", 1) sSettingName = Left(sLine, iEquals -1) sSettingValue = Mid(sLine, iEquals +1) ' // Get rid of any trailing semi-colons // If Right(sSettingValue, 1) = ";" Then sSettingValue = Left(sSettingValue, Len(sSettingValue) -1) End If ' // Create setting object // Local newSetting:tFRSetting = New tFRSetting newSetting.id = sSettingName newSetting.value = sSettingValue ' // Add this new setting object to the file class // ListAddLast Self.settings, newSetting End If Wend CloseStream strmFile End Function Function saveFile(fileName:String) Local strmFile:TStream Local s:tFRSetting strmFile = WriteFile(fileName) For s = EachIn self.Settings WriteLine strmFile, s.id + "=" + s.value + ";" Next CloseStream strmFile End Function End Type Function FRLoadFile:tFRFile(fileName:String) Local newFile:tFRFile = New tFRFile newFile.fileName = fileName newFile.loadRaw(fileName) Return newFile End Function Print " Module: FileReader Loaded" Whats going on there. |
| ||
Ok Found it, Sorry for wasting thread space, its because Im using Functions and not Methods inside the Types when Im not returning anything, schoolboy error! My bad. Although, shouldnt I get a "no return value found" when I declare them? Cheers, A |
| ||
The return isn't a problem Problem is that Function can not access Fields defined as it works on "type scope" and not "instance scope" so the only thing it knows of within a type is global and const. for working on instance scope you have to use method as you already realized :) return is no problem. wrong return types etc would give you an error as many other things would too (especially in strict) |
| ||
Ah Of course, that makes perfect sense and I should bash my head against something until it hurts. Thanks Dreamora for the explanation, I really should have realised that one myself. Ta A |