Hallo!
Ja klar gerne gebe ich noch mehr Code, das ist hier ja kein Mega-Geheimprojekt! Es ist ein
Irc-ähnlicher Chat.
Wundert euch bitte nicht über euch komisch vorkommende Zeilen, wenn ich zum beispiel
ip und channel erstmal konstant setze usw., das brauch ich jetzt nur zum testen!
also erstmal die formcreate, die den ganzen schnodder dan später aufruft:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var information :
string;
begin
durchlaufen := false;
standardnick := '
';
standardchannel := '
';
ip := '
85.214.40.83';
channel := '
Willkommen';
dateipfad := '
C:\Programme\ChatclientbyMalteundSoeren';
information := '
1337/85.214.40.83/Maltimore/Willkommen';
loadstringfromfile(dateipfad+'
\userdaten.txt', information);
//hier geht der ärger los!!
if durchlaufen
then
showmessage ('
durchlaufen ist true');
sleep(1000);
port := Form1.wertzurueck(1, Information);
ip := Form1.wertzurueck(2, Information);
standardnick :=Form1.wertzurueck(3, Information);
channel :=Form1.wertzurueck(4, Information);
memo1.Clear;
listbox1.items.add('
Userlist');
edit1.text := '
Nachricht eingeben';
ClientSocket1.Host:=
ip;
ClientSocket1.Active:=true;
repeat
begin
Nickname := inputbox('
Username', '
Bitte geben sie einen gültigen Usernamen ein', standardnick);
if length(nickname) > 20
then showmessage('
Es dürfen nicht mehr als 20 Zeichen sein!');
end;
until length(nickname) < 21;
form1.Caption := '
Angemeldet als: ' + Nickname + '
||| Channel: Willkommen';
Form1.Anmelden;
end;
dann die loadstringfromfile, die ich hier aus dem forum weitestgehend übernommen habe:
Delphi-Quellcode:
procedure LoadStringFromFile(Filename: string; var LoadString: string);
var
fs: TFileStream;
begin
// DER FEHLER IST DAS FORM2.show so schnell durchlaufen wird das man keine chance
// hat die sachen einzugeben! Programm muss hier warten!
if fileexists(loadstring) = true then begin
showmessage('fileexists ist true');
fs := TFileStream.Create (Filename, fmOpenRead or fmShareDenyNone);
end else begin
showmessage('fileexists ist false');
form1.createuserprofile;
while form2.modalresult = 0 do
application.processmessages;
fs := TFileStream.Create (Filename, fmOpenRead or fmShareDenyNone);
end;
try
SetLength (LoadString, fs.Size);
if fs.size>0 then
fs.Read (LoadString[1], fs.Size);
finally
fs.Free;
end;
end;
und noch die createuserprofile:
Delphi-Quellcode:
procedure Tform1.createuserprofile;
begin
form2.Showmodal;
//hier soll später noch mehr rein, mir ist klar dass es sonst keinen sinn macht,
//für form2.showmodal ne eigene prozedur zu bauen
end;
und wenn hier noch die form2.button1click, bei der dann das modalresult auf mrok gesetzt werden soll:
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var stringi: string;
var Text_Datei : TextFile;
var pport, pip: bool;
begin
pport := false;
pip := false;
stringi := '';
stringi := Edit1.Text + '/' + Edit2.Text + '/' + Edit3.text + '/' + edit4.text + '/';
form1.port := edit1.text;
form1.ip := edit2.Text;
form1.standardnick := edit3.Text;
form1.standardchannel := edit4.Text;
AssignFile (Text_Datei,form1.dateipfad+'\userdaten.txt');
Rewrite(Text_Datei);
Write(Text_Datei,stringi);
CloseFile(Text_Datei);
form1.durchlaufen := true;
form2.modalresult := mrOK; //das hier ist da wohl das wichtigste für euch
if alterport <> form1.port then
pport := true;
if alteip <> form1.ip then
pip := true;
form1.werteuebernehmen(pport, pip);
form2.Close;
end;
So, ich hoffe das war jetzt nicht ZU viel
Wäre euch unendlich dankbar, wenn ihr den Fehler finden würdet.