我是一个大新手,所以我需要你的帮助!
我如何阅读我的" .txt"? 为什么查询在游戏中不起作用?或者与之比较 (密码= .txt)文件?
[Command("log")]
public void login3(Client player, string passwort)
{
var sender = API.getPlayerName(player);
var reader = new StreamReader(File.OpenRead(player + ".txt"));
{
using (StreamReader leser = new StreamReader(player + ".txt"))
if ((passwort = leser.ReadLine()) != null)
{
API.sendChatMessageToPlayer(player, "Erfolgreich eingeloggt!");
}
else
{
API.sendChatMessageToPlayer(player, "Passwort falsch!");
}
}
}
答案 0 :(得分:0)
评论已经指出了你的主要问题。您正在分配passwort
,而不是比较它,因为您使用的是单=
运算符。要进行比较,请使用==
。
此外,您有一个未使用的StreamReader
,并且您使用的那个没有正确处理。
最后,在修复double ==之后,不能进行空检查,因为true和false都不为null。检查行内容是否等于密码。
试试这个:
[Command("log")]
public void login3(Client player, string passwort)
{
var sender = API.getPlayerName(player);
using (var reader = new StreamReader(File.OpenRead(sender + ".txt")))
{
// use double ==
// check if line contents equal to password, not null, because false is not null too
if (passwort == reader.ReadLine())
{
API.sendChatMessageToPlayer(player, "Erfolgreich eingeloggt!");
}
else
{
API.sendChatMessageToPlayer(player, "Passwort falsch!");
}
}
}
答案 1 :(得分:0)
我建议File.ReadLines
和 Linq 而不是StreamReader
:
[Command("log")]
public void login3(Client player, string passwort)
{
//DONE: validate public method's arguments
if (null == player)
throw new ArgumentNullException("player");
else if (String.IsNullOrEmpty(password))
return; // Player doesn't have a password
// Read the first line of the file and compare it with the password
if (File
.ReadLines(player + ".txt") //TODO: implement as a property: player.FileName
.Take(1)
.Any(line => line == passwort))
API.sendChatMessageToPlayer(player, "Erfolgreich eingeloggt!");
else
API.sendChatMessageToPlayer(player, "Passwort falsch!");
}