Comment puis-je résoudre erreur d'e/S 103 en delphi

Donc, Fondamentalement, je suis au Collège dans le royaume-UNI (Ainsi que de l'école pour les Américains (17 ans)) et je dois faire un traitement de fichiers de projet pour mon finales.
J'ai effectué la plupart de cela, mais c'est l'écran de connexion qui pèse m'en a beaucoup. Ce que je veux de programme à faire est de lire le nom d'utilisateur et le mot de passe et vous connecter les gens. Il peut y avoir 2 sorties différentes. Si vous tapez "Personnel" dans le nom d'utilisateur et "warwickschool2013" dans le nom d'utilisateur, le programme vous emmène à la "enseignant" du côté de l'émission où ils peuvent ajouter de nouveaux utilisateurs.

unit LoginScreen;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls;
type
TfrmLogin = class(TForm)
lblWelcomeLogin: TLabel;
edtPassword: TEdit;
lblPassword: TLabel;
btnLogin: TButton;
btnClose: TButton;
lblCounter: TLabel;
lblAttempts: TLabel;
Image1: TImage;
edtUsername: TEdit;
lblUserName: TLabel;
procedure btnCloseClick(Sender: TObject);
procedure btnLoginClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmLogin: TfrmLogin;
implementation
uses MainMenu, TeachersMainMenu, ViewEditTheData, Globals_Unit;
var
LoginDataArray: array of TLoginData;
counter: integer;
Password, username : String;
Count1, Count2 : integer;
Temp: TLoginData;
{$R *.dfm}
procedure TfrmLogin.btnLoginClick(Sender: TObject);
var
SearchName : string[10];
SearchCode : string[3];
begin
Password:=edtPassword.Text;
UserName:=edtUserName.Text;
btnclose.enabled:= true;
if (Password = 'warwickschool2013') AND (Username = 'Staff') then
begin
edtPassword.text :='';
frmTeachersMainMenu.show;
frmLogin.hide;
counter:= 0;
lblCounter.caption := IntToStr(Counter);
end
else
begin
assignfile      (LoginDatafile,'C:\Users\NinjaBoffin\Desktop\Delphi\DataFiles\LoginData.txt');
reset (LoginDatafile);
LoginDatacounter := FileSize(LoginDatafile);
SetLength(LoginDataArray, LoginDatacounter);
edtPassword.clear;
edtUserName.Clear;
for Count1 := 1 to LoginDataCounter  do
begin
read(LoginDatafile,SingleLoginData);
LoginDataArray[Count1] := SingleLoginData;
end;
closefile (LoginDatafile);
//bubble sort
edtUserName.Clear;
for count1 := 1 to LoginDatacounter-1 do
for count2 := 1 to LoginDatacounter-1 do
if LoginDataArray[count2].UserName > LoginDataArray[count2+1].UserName then
begin
temp := LoginDataArray[count2+1];
LoginDataArray[count2+1] := LoginDataArray[count2];
LoginDataArray[count2] := temp;
end;
//Linear Search (files getting ready)
begin
SearchName := edtUserName.text;
assignfile     (LoginDatafile,'C:\Users\NinjaBoffin\Desktop\Delphi\DataFiles\LoginData.txt');
reset (LoginDatafile);
LoginDatacounter := FileSize(LoginDatafile);
SetLength(LoginDataArray, LoginDatacounter);
edtUserName.Clear;
//Copying to array
for  Count1 := 1 to StudentCounter do
begin
read(LoginDatafile,SingleLoginData);
LoginDataArray[Count1] := SingleLoginData;
end;
closefile (Studentfile);
//The actual linear search
for  Count1 := 1 to StudentCounter do
begin
if LoginDataArray[Count1].Username = SearchName then
begin
assignfile    (LoginDatafile,'C:\Users\NinjaBoffin\Desktop\Delphi\DataFiles\LoginData.txt');
reset (LoginDatafile);
LoginDatacounter := FileSize(LoginDatafile);
SetLength(LoginDataArray, LoginDatacounter);
edtPassword.clear;
for Count1 := 1 to LoginDataCounter  do
begin
read(LoginDatafile,SingleLoginData);
LoginDataArray[Count1] := SingleLoginData;
end;
closefile (LoginDatafile);
//bubble sort
edtUserName.Clear;
for count1 := 1 to LoginDatacounter-1 do
for count2 := 1 to LoginDatacounter-1 do
if LoginDataArray[count2].Password > LoginDataArray[count2+1].Password then
begin
temp := LoginDataArray[count2+1];
LoginDataArray[count2+1] := LoginDataArray[count2];
LoginDataArray[count2] := temp;
end;
//Linear Search (files getting ready)
begin
SearchName := edtPassword.text;
assignfile (LoginDatafile,'C:\Users\NinjaBoffin\Desktop\Delphi\DataFiles\LoginData.txt');
reset (LoginDatafile);
LoginDatacounter := FileSize(LoginDatafile);
SetLength(LoginDataArray, LoginDatacounter);
edtPassword.clear;
//Copying to array
for  Count1 := 1 to StudentCounter do
begin
read(LoginDatafile,SingleLoginData);
LoginDataArray[Count1] := SingleLoginData;
end;
closefile (Studentfile);
//The actual linear search
for  Count1 := 1 to StudentCounter do
begin
if LoginDataArray[Count1].Password = SearchName then
begin
frmLogin.Hide;
frmMainmenu.Show;
end;
end;
end;
end;
end;
end;
end;
end;

Si ce n'est pas le nom d'utilisateur et le mot de passe, vous devez entrer le mot de passe et nom d'utilisateur faite par l'enseignant pour vous. C'est dans la forme les enseignants et le fichier est "Logindata.txt".

procedure TfrmAddNewUser.btnAddNewStudentClick(Sender: TObject);
begin
assignfile (LoginDataFile,'C:\Users\NinjaBoffin\Desktop\Delphi\DataFiles\LoginData.txt');
reset (loginDataFile);
LoginDataCounter := FileSize(LoginDataFile);
SingleLoginData.Username := edtNewUsername.text;
SingleLoginData.Password := edtNewPassword.Text;
//find where to store the record
seek (LoginDataFile,LoginDataCounter);
{...and put the record in}
write(LoginDataFile,SingleLoginData);
closefile (LoginDataFile);
edtNewUserName.Text := '';
edtNewPassword.Text := '';
end;

Je suis une constante I/O 103 erreur et je ne sais pas d'où il provient (C'est dans le formulaire de connexion)
Alors, comment puis-je corriger cette erreur? et le login de travail?

C'est ma première fois de programmation

  • Pourquoi êtes-vous à l'aide de longueur fixe shortstring? Pourquoi êtes-vous en utilisant les anciens Pascal IO? Pourquoi n'est-ce pas votre code indenté correctement?
  • Veuillez prendre le temps de modifier votre question pour formater le code de sorte qu'il est lisible. Il y a beaucoup de code de wade alors que c'est très mal mis en forme. Aussi, utiliser le débogueur. Définissez un point d'arrêt (cliquez sur une ligne dans la btnLoginClick événement et appuyez sur F5 ou cliquez sur le point bleu dans la gouttière de gauche de l'éditeur de code, puis d'exécuter votre application avec F9). Lorsque le point d'arrêt est atteint, utiliser la touche F8 pour exécuter chaque ligne de la figure où l'erreur est causé. Alors, si vous ne pouvez pas comprendre les choses, vous pouvez poster les sections pertinentes de votre code, et nous pouvons essayer de l'aider.
  • DavidHeffernan: je suis le seul à utiliser ce que j'ai appris 🙁
  • 103 Code est le fichier s'ouvre pas comme un websearch l'aurais dit. Utiliser le débogueur pour savoir où il en est.
  • Vos enseignants vous ont appris les mauvaises habitudes.
  • Pour la mise en forme, cela peut vous aider.
  • assignfile (LoginDatafile,...); reset (LoginDatafile);... closefile (Studentfile); - probablement pas ce que vous pensez.
  • Je devine que j'ai appris de mauvaises habitudes! Mais encore une fois nous faisions pascal de l'année dernière et cette année, delphi. Si nous n'étions pas enseigné un "compliqué" des choses.
  • J'ai essayé de mon mieux pour le format de vos moyens, de l'espoir, cela fait plus de sens maintenant
  • Qui a fixé une chose :D, mais maintenant, elle ne change pas de formes. Il efface simplement les zones d'édition et ne fait rien. J'ai ajouté clair les zones d'édition, mais il devrait alors "me connecter". Au lieu de cela elle efface simplement les cases et ne fait rien
  • s'il vous plaît ne pas attendre de nous de débogage de l'ensemble de votre programme. Vous avez demandé à propos de 103.
  • Je ne suis Pas 🙁 j'ai d'autres formes dans lesquelles le tri de travail et un test aléatoire générateur qui marque réponses des élèves, seulement ce n'est pas de travail.
  • On dirait que vous avez eu votre réponse, non?
  • J'ai roulé en arrière votre edit, parce que c'est un) n'est pas valide, c'est pas la question que les gens fassent des commentaires en essayant de vous aider à résoudre, et b) à ajouter [RÉSOLU] à la question du titre et de poser une nouvelle question au lieu de cela n'est pas comment StackOverflow œuvres. Si vous avez une nouvelle question, créer un nouveau poste et de demander à la nouvelle question. Si vous avez trouvé une réponse à cette question, soit laisser un commentaire à la personne en lui demandant de poster une réponse si vous pouvez l'accepter comme correcte, ou postez un vous-même. L'auto-répondeur est encouragés ici.
  • Merci les Gars pour résoudre le problème (erreur d'e/S 103) s'avère que j'avais de la fermeture du fichier qui n'existe pas Closefile (StudentFile) Quand il doit avoir été Closefile (LoginDataFile) Merci à tous ceux qui ont aidé et désolé d'être contraire à l'éthique 🙁

InformationsquelleAutor NinjaBoffin | 2014-02-25