Einzelnen Beitrag anzeigen

Maltimore

Registriert seit: 2. Mär 2008
37 Beiträge
 
#9

Re: alternative zu waitforevent

  Alt 6. Jun 2009, 17:50
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.
  Mit Zitat antworten Zitat