Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - TListView für Win9x?
Delete - Di 02.11.04 19:00
Titel: TListView für Win9x?
Hallo,
ich musste feststellen, dass die TListView-Komponente auf Windows 98 (wahrscheinlich auch 95) keine Einträge anzeigt. Aus diesem Grund suche ich eine TListView, die möglichst haargenau der delphieigenen gleicht, aber Win9x kompatibel ist.
jaenicke - Mi 03.11.04 14:58
Moment: Die TListView IST Windows9x kompatibel. Meine Programme laufen alle problemlos unter Windows 95, 98 und ME, und die benutzen die Komponente auch. Da ist wohl in deinem Programm was schief gegangen.
Delete - Mi 03.11.04 20:13
Offenbar ja. Das Problem liegt devinitiv wo anders.
jaenicke - Do 04.11.04 13:55
Warum postest du nicht einfach mal deinen Code? Dann könnten wir dir helfen, den Fehler zu finden.
Delete - Do 04.11.04 18:59
Ok, meinetwegen. Allerdings geht dieses Problem jetzt in eine ganz andere Richtung.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| function ConvertTo255(IP: string):string; var loop: integer; begin for loop := length(IP) downto 0 do if IP[loop] = '.' then begin result := copy(IP,1,loop)+'255'; break; end; end;
procedure SendPing(Info: TInfo); var BroadCastIP: string; Stream: TMemoryStream; begin BroadCastIP := Convertto255(Form1.idIPWatch1.LocalIP); Form1.UdpClient.Host := BroadCastIP; Stream := TMemoryStream.Create; Stream.Write(PING, SizeOf(PING)); Stream.Write(Info, SizeOf(Info)); Form1.UDPClient.SendStream(Stream); Stream.Free; end; |
Das ist ein Auszug aus meinem UDP-Chat, der ohne Server konzipiert ist. Jeder Client sendet regelmäßig einen Ping an die Broadcast-IP, die aufgrund der eigenen IP (vollkommen unfundiert) ermittelt wird. Es wird halt immer die eigene IP genommen und ans Ende eine 255 geschrieben.
Empfangen wird mit diesem Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.UDPServerInput(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle); var Signal: integer; begin AData.Read(Signal, SizeOf(Signal)); If Signal = PING then inProcessPing(Abinding.PeerIP, AData) else if Signal = TEXT_MESSAGE then inProcessMessage(Abinding.PeerIP, Adata) else if Signal = SHUTDOWN then inRemoveClient(ABinding.PeerIP) else if Signal = SET_CURSOR then inSetCursor(ABinding.PeerIP, AData) else if Signal = SET_DESKTOP then inSetFalseDesktop; end; |
Das Kompatibilitätsproblem sieht nun so aus:
WinXP und Win9x können die Datenpakte senden, sprich Win9x-Rechner werden von anderen Rechner gesehen. Empfangen kann aber nur ein WinXP-Rechner. Worin kann nun das Problem liegen?
P.S.: @admins: evt Thread teilen und verschieben
wulfskin - Do 04.11.04 19:41
Hallo Elite,
ich hatte mal ähnliche Probleme mit den Komponenten TCLientSocket und TServerSocket. Hab diese damals auch leider nicht lösen können. Allerdings weiss ich aus Erfahrung, dass die Verbindung mit den UDP-Komponenten funktioniert.
Es gibt für Win95 ein Update, welches die Sockets in irgend einer Weise repariert. Hast du das schonmal ausprobiert (Such nach "Socket Update" oder so)?
Gruß Hape!
Delete - Do 04.11.04 19:47
Achso, kleine Ergänzung: Es handelt sich um die Indy-UDP Komponenten. Gilt deine Antwort auch dafür?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!