![]() |
Re: Chat FTP Server
Du bist ein Genie. Und ich ein Holzkopf. Also, jetzt kommt keine Fehlermeldung mehr es passiert einfach nix. Die Datei die sich bereits auf dem Server befindet bleibt leer :(. Hier noch einmal die beiden Quelltexte:
Delphi-Quellcode:
PHP Datei:
unit chatpas;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Winsock, ScktComp, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdFTP, IdHTTP; type TForm1 = class(TForm) Memo1: TMemo; Message: TLabel; Sendtext: TEdit; Send: TButton; Connect: TButton; ListBox1: TListBox; Nicknametext: TEdit; Nickname: TLabel; ListBox2: TListBox; ServerSocket1: TServerSocket; ClientSocket1: TClientSocket; IdHTTP1: TIdHTTP; procedure ConnectClick(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Memo1.Lines.Delete(0); end; function GetLocalIPs(const Lines:TStrings):Boolean; type PPInAddr= ^PInAddr; var wsaData: TWSAData; HostInfo: PHostEnt; HostName: Array[0..255] of Char; Addr: PPInAddr; begin Result:=False; Lines.Clear; if WSAStartup($0102, wsaData)=0 then try if gethostname(HostName, SizeOf(HostName)) = 0 then Begin HostInfo:= gethostbyname(HostName); if HostInfo<>nil then Begin Addr:=Pointer(HostInfo^.h_addr_list); if (Addr<>nil) AND (Addr^<>nil) then Repeat Lines.Add(StrPas(inet_ntoa(Addr^^))); inc(Addr); Until Addr^=nil; end; end; Result:=True; finally WSACleanup; end; end; procedure TForm1.ConnectClick(Sender: TObject); var idhttp1: TIdhttp; parameter: TStringlist; begin if not GetLocalIPs(Listbox2.Items) then MessageDLG('Keine IP-Adresse',mtInformation,[mbOK],0); Parameter:=TStringlist.Create; idhttp1 := TIdhttp.Create(nil); parameter.Add('nickname=nicknametext.text'); parameter.Add('ip=listbox1.items(0)'); idhttp1.Post('http://sbinder.sb.funpic.de/users.php', parameter); idhttp1.Free; end; end.
Delphi-Quellcode:
<?
$inhalt = $_POST['nickname'] $_POST['ip']; $filename = 'users.txt'; $handle = fopen($filename, "a") fwrite($handle, $inhalt); fclose($handle); ?> |
Re: Chat FTP Server
Hi!
Zwei Sachen mal vorneweg, bevor man überhaupt nach anderen Sachen sucht: Du solltest bei der StringList mit Try..Finally arbeiten und sie auch wieder freigeben und außerdem solltest du dir Gedanken über den Umgang mit Strings machen. Im Moment steht in Nickname z.B. immer drin nicknametext.text; Richtigerweise sollte es wohl so aussehen:
Delphi-Quellcode:
parameter.Add('nickname='+nicknametext.text);
Ciao Frederic P.S. Ein Genie bin ich nicht :wink: |
Re: Chat FTP Server
Mir kommt es aber so vor als wärst du ein Genie ;)
Also das mit dem try finall usw. komme ich noch nicht ganz draus aber damit beschäftige ich mich später dann (oder ist das dass Problem???). Das mit dem Nickname (das +) ändere ich gleich mal, muss das auch bei IP rein?? Achja und stimmt das bei IP das im Klammer ne 0 ist. Hab ich rein gemacht weil bei mir zBs. mehrere IP's laufen, weil ich vmware (Sandboxteil) habe. Mit 0 ist doch die erste Zeile gemeint oder? EDIT: Was meinst du mit "Gedanken über den Umgang mit Strings"? |
Re: Chat FTP Server
Hi!
Ja, bei IP musst du das auch ändern. 0 gibt auch rein theoretisch die erste Zeile an, nur von welcher Listbox überhaupt? Du rufst ja GetLocalIps für Listbox2 auf, oder? Ciao Frederic Zum Edit: Das meinte ich wegen dem Hinzufügen mit dem +.... |
Re: Chat FTP Server
Naja, das ganze speichert es ja in Listbox 2 (ich schreib das nachher mal in die Formcreate damit es gleich von Anfang an drin ist) und die Listbox 2 hab ich auf Unsichtbar, sie dient quasi als Zwischenspeicher für die IP weil ich sonst nicht weiss wie ich es einfacher machen könnte.
EDIT: Wenn ich IP auf
Delphi-Quellcode:
ändere dann kommt beim compilieren die Meldung das ein Operator oder ein Semikolon fehlt.
parameter.Add('ip='+listbox1.items(0));
|
Re: Chat FTP Server
Hi!
Ja, das ist mir klar, aber bei der Parameterübergabe rufst du doch Zeile 1 (bzw. Index 0) von Listbox1 auf, oder? Ciao Frederic |
Re: Chat FTP Server
Nö von Listbox 2 weil ich ja am Anfang (jetzt in der Formcreate) meine IP dort hinein speichere.
EDIT: Siehe noch EDIT meines letzten Posts EDITEDIT: Sorry habe Listbox 1 im Quelltext geschrieben. Habe es geändert. |
Re: Chat FTP Server
Hi,
mal ne blöde frage, du nimmst doch die lokale IP, oder? Bei den meisten ist standartmäßig 192.168.0.1 die lokale IP. d.h.Die IP aller user ist gleich ?! |
Re: Chat FTP Server
Nicht unbedingt. Aber wie kann ich dann die andere IP rausfinden. Die, die man zBs. hier
![]() |
Re: Chat FTP Server
Hi!
Also es muss
Delphi-Quellcode:
heißen.
Listbox1.Items[0]
Zum Thema der globalen oder externen Ip gibts hier massenweise Threads: einfach mal suchen. Ciao Frederic |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz