Autor Beitrag
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Mo 26.03.07 11:35 
HI,
ich hab ein Problem mit den Socketcomponenten:
Der fehler kommt:

user defined image

kann mir jemand sagen woran das liegen könnte?

MfG & THX Bergmann.

p.s: Hab grad rausgefunden das es am Client liegt!
Fighter#1
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: Mo 26.03.07 14:53 
[glaskugel]
Ich würde sage es liegt an deiner negativen Aura
[/glaskugel]

Zeig uns deinen code, dann können wir dir helfen.
Sieht stark aus als wolltest du etwas senden und hast noch nicht verbunden!

_________________
Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Mi 28.03.07 11:33 
HI,

ich hab den fehler gefunden, aber ich bekomm ihn nicht weg.
Ich hab ne Variable "Server" die is true wenn man server is.
und dann "if Server = False then ClientSendToSever"
Die Procedure sendet die daten vom Client an den Server.
Aber der Server führt die Procedure auch aus, obwohl ja vorher
die if-Abfrage steht. Hab auch mal nachgesehen, die Server-
Variable wird auf True gesetzt!

Das gesammte Projekt gibts hier: DOWNLOAD (4,6MB)

MfG Bergmann.
Einloggen, um Attachments anzusehen!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 03.04.07 21:38 
Moin!

Ich kann das gesamte Projekt nicht runterladen (jedenfalls nicht, ohne Scripte auf der Download-Seite auszuführen - das werde ich aber nicht tun); warum hast du es nicht hier in den Anhang gepackt (ohne die EXE)?

Also habe ich mal kurz in dein Code-Archiv reingesehen, zugegeben nicht sonderlich "tief". Mir ist allerdings direkt aufgefallen, dass du z.B. sowas machst:
ausblenden 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:
procedure TForm1.ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
var ServerMessage:String;
var Variables: Boolean;
var Position: array of TVektor;
var Speed:    array of TVektor;
var i:Integer;
var Bitmap: TBitmap;
begin
  ServerMessage := ClientSocket.Socket.ReceiveText;
  memo1.Text := Servermessage;
  Memo.Lines.SaveToFile('FromServer.log');
  Variables := True;

  if ServerMessage[1] = 'P' then
    begin
      delete(ServerMessage,1,1);
      Player := StrToInt(copy(ServerMessage,1,pos(',',ServerMessage)-1))-1;
      delete(ServerMessage,1,pos(',',ServerMessage));
      Players := StrToInt(ServerMessage);
      Form2.IpLabel.Caption := Form2.IpLabel.Caption + chr(13) + 'Sie sind Spieler '+IntToStr(Player)+'.';
      Form2.IpLabel.Caption := Form2.IpLabel.Caption + chr(13) + 'Es nehmen '+IntToStr(Players)+' Spieler am Spiel teil.';
      Variables := False;
    end;

  if ServerMessage = 'FULL' then

a) Was passiert wohl, wenn du einen Leerstring aus dem Socket liest (was durchauch möglich ist!)? Genau, Exception bei ServerMessage[1]! :shock:
b) Du verlässt dich darauf, dass die Datenpakete zu den Ereignissen passen. Weit verbreiteter Irrtum, siehe FAQ-Beitrag! :mahn:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Mi 04.04.07 14:43 
HI,
erstma Danke das du dich damit beschäftigt hast.
Das tutorial les ich mir gleich durch. Aber zuerst:
was meinst du mit "nicht sonderlich 'tief'" ?!
Und das gesamt Projekt passt nicht in den Anhang,
auch wenn ich die EXE rausnehm. Wenn ich die Images
noch raus nehm passts, dann habt ihr aber auch nix
anderes als den Quelltext. (und den habt ihr ja schon).


MfG Bergmann.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 04.04.07 14:48 
Moin!

user profile iconBergmann89 hat folgendes geschrieben:
was meinst du mit "nicht sonderlich 'tief'" ?!

Ich hab mal über den Quelltext überflogen, aber nach deiner "Fehlerbeschreibung" kann ich da nix "erkennen"...

user profile iconBergmann89 hat folgendes geschrieben:
Und das gesamt Projekt passt nicht in den Anhang,

Du kannst doch drei Dateien anhängen, teils halt auf. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Mi 04.04.07 19:40 
Ich hab versucht es hoch zu laden, aber mein Modem kommt nicht hinterher.
Das müsste ich dann wieder in der Schule machen, aber zur Zeit sind Ferien.
Ich versuch jetzt ma mit deinem Netzwerk Protokoll, hab mir das Tutorial
geladen und arbeite das grad durch (bin Seite 26). An manchen Stellen n
bisl kompli, aber ansonsten gute Arbeit. Ma sehen ob's damit besser geht.
Wenn nicht dann mach ich wieder 2 verschiedene Programme, Server und Client
getrennt! Und wenns dann immer noch nicht geht, dann lass ich's sein, oder
ich meld mich nochma!

MfG Bergmann.
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Do 05.04.07 18:02 
So, hab mir jetzt das Tutorial soweit durchgearbeitet wie ich das für mein Projekt brauch. Hab jetzt aber ein Problem/eine Frage: Wenn ich die Daten als Integer weg schick:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
CmdSeq := TCmdSeq.Create(cmdSendPlayers);
CmdSeq.Add(IntToStr(i));
CmdSeq.Add(IntToStr(Players));
ServerPA.Connections[i].Outbound.AddCmdAndFree(cmdSeq);
ServerPA.Connections[i].Send;

und dann auf der gegenseite versuch die wieder zu lesen:
ausblenden Delphi-Quelltext
1:
2:
Player  := PA.Inbound.Strings[1];
Players := PA.Inbound.Strings[2];

dann meckert er wegen String und Integer rum!

Aber wenn ich die Daten vorher mit IntToStr in einen
String umwandel hättest du dir die Mühe mit den
einzelen Typen ja gar nicht machen brauchen?!
Also wie geht das denn nu ?! Das is das einzige wo ich
häng ansonsten müsste alles gehen und ich bin morgen
FERTSCH ^^

MfG Bergmann.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 05.04.07 23:19 
Moin!

user profile iconBergmann89 hat folgendes geschrieben:
So, hab mir jetzt das Tutorial soweit durchgearbeitet wie ich das für mein Projekt brauch.

Zunächstmal: wenn du nicht tiefer einsteigen willst, dann sind die TNBFPA-Kompos doch eigentlich genau richtig für dich. ;)

Dann zu deiner Frage:
user profile iconBergmann89 hat folgendes geschrieben:
Hab jetzt aber ein Problem/eine Frage: Wenn ich die Daten als Integer weg schick:

Dann solltest du das auch tun: ;)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
CmdSeq := TCmdSeq.Create(cmdSendPlayers);
CmdSeq.Add(i);
CmdSeq.Add(Players);
ServerPA.Connections[i].Outbound.AddCmdAndFree(cmdSeq);
ServerPA.Connections[i].Send;

------

Player  := PA.Inbound.Strings[1];
Players := PA.Inbound.Strings[2];

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Fr 06.04.07 13:00 
Ups, sorry der Quelltext war falsch...
Ich hatte das genau so wie du, dann hat er aber unten rumm gemeckert,
weil ja StringList[x] ein String ist und die Variable n Integer.
Deshalb hab ich das jetzt erstma so gemacht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
CmdSeq := TCmdSeq.Create(cmdSendPlayers);
CmdSeq.Add(IntToStr(i));
CmdSeq.Add(IntToStr(Players));
ServerPA.Connections[i].Outbound.AddCmdAndFree(cmdSeq);
ServerPA.Connections[i].Send;

------

Player  := StrToInt(PA.Inbound.Strings[1]);
Players := StrToInt(PA.Inbound.Strings[2]);


So geht ersma alles, bis auf die Datenübertragung
im Spiel, also wenn man dann mit den Autos rumfahren kann.
Ich hab das Projekt mal hochgeladen (aber ohne die Bilder
und Sounds). Ich wäre dir echt dankbar wenn du mir da nochma
helfen könntest.

MfG & Thx Bergmann.
Einloggen, um Attachments anzusehen!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Sa 07.04.07 00:08 
Moin!

user profile iconBergmann89 hat folgendes geschrieben:
Ups, sorry der Quelltext war falsch...

Dito... :oops:

user profile iconBergmann89 hat folgendes geschrieben:
Ich hatte das genau so wie du, dann hat er aber unten rumm gemeckert,
weil ja StringList[x] ein String ist und die Variable n Integer.

Eben, deshalb muss das beim Lesen auch so sein (das Tut war doch von mir, oder... :nut:):
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
CmdSeq := TCmdSeq.Create(cmdSendPlayers);
CmdSeq.Add(i);
CmdSeq.Add(Players);
ServerPA.Connections[i].Outbound.AddCmdAndFree(cmdSeq);
ServerPA.Connections[i].Send;

------

Player  := PA.Inbound.AsInt[1];
Players := PA.Inbound.AsInt[2];


user profile iconBergmann89 hat folgendes geschrieben:
Ich hab das Projekt mal hochgeladen (aber ohne die Bilder und Sounds). Ich wäre dir echt dankbar wenn du mir da nochma helfen könntest.

Ich werd mal reinschauen, aber ich verspreche nix. :?

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Sa 07.04.07 11:59 
OK, trotzdem erstma VIELEN DANK!
Ich werd das mit dem "AsInt[x]" jetzt noch ändern...
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 08.04.07 01:36 
Moin!

user profile iconBergmann89 hat folgendes geschrieben:
So geht ersma alles, bis auf die Datenübertragung
im Spiel, also wenn man dann mit den Autos rumfahren kann.

Witzbold, das ist ja nun auch der schwierige Teil... :P

Hast du eigentlich nicht bemerkt, dass der Compiler 2 Warnungen im Server-Code ausgibt: :gruebel:
Compiler hat folgendes geschrieben:
[Warnung] Unit1.pas(106): FOR-Schleifenvariable 'i' kann nach Durchlauf undefiniert sein

ausblenden volle Höhe 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:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
procedure TNBFPAServer.ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
  var
    i: Integer;
    CmdSeq: TCmdSeq;
begin
  i := ServerPA.IndexOfSocket(Socket); // neuen Client registrieren
  LogIt('+ SID:'+IntToStr(ServerPA.Connections[i].SessionID)+
  ' verbunden mit '+Socket.RemoteAddress);
  // Connect-Ereigniskette: Server-Seite, "X" aktuelle Position im Ablauf
  // Pos Aktion Client Server
  // X <- Protokoll-Infos senden
  // . -# Protokoll inkompatibel: Client trennt die Verbindung
  // . -| Protokoll OK: Ereigniskette Ende (keine weitere Reaktion)
  CmdSeq := TCmdSeq.Create(cmdVERSION); // Kommandosequenz anlegen
  CmdSeq.Add(APPID_SRV); // Applikations-ID
  CmdSeq.Add(IntToStr(PROTO_VER)); // Protokoll-Version
  CmdSeq.Add(IntToStr(PROTO_REV)); // Protokoll-Revision
  with ServerPA.Connections[i] do begin
    Outbound.AddCmdAndFree(CmdSeq); // Sequenz übergeben / Objekt freigeben
    Send; // Daten senden
  end;

  if Players < 10 then
    begin
      inc(Players);
      SetLength(ClientReady,Players);
      for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do
        ClientReady[i] := False;
      CmdSeq := TCmdSeq.Create(cmdSendPlayers);
      CmdSeq.Add(IntToStr(i)); // --- hier ---
      CmdSeq.Add(IntToStr(Players));
      ServerPA.Broadcast(cmdSeq);
    end
  else
    begin
      CmdSeq := TCmdSeq.Create(cmdFullServer);
      ServerPA.Connections[i].Outbound.AddCmdAndFree(CmdSeq);
      ServerPA.Connections[i].Send;
    end;
end;

Compiler hat folgendes geschrieben:
[Warnung] Unit1.pas(137): Variable 'i' ist möglicherweise nicht initialisiert worden

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TNBFPAServer.ServerSocket1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
  var
    i: Integer;
    CmdSeq: TCmdSeq;
begin
  DeleteClient(Socket); // Client aus der Userliste nehmen
  dec(Players);
  Log.Lines.Add(IntToStr(Players));
  SetLength(ClientReady,Players);
  CmdSeq := TCmdSeq.Create(cmdSendPlayers);
  CmdSeq.Add(IntToStr(i)); // --- hier ---
  CmdSeq.Add(IntToStr(Players));
  ServerPA.Broadcast(CmdSeq);
end;

Behebe doch noch bitte diese beiden potentiellen Fehler und gib dann noch eine exakte Fehlerbeschreibung an, was nicht funktioniert (also sowas wie "wenn ich da was mache, dann geht das nicht" wäre vermutlich nicht geeignet, meine Motivation DEINE FEHLER zu suchen, zu heben... :mahn:)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Di 10.04.07 18:49 
so, die fehler mit dem "i" sind erstma raus...
Jetzt zu dem anderen Problem:

hiermit werden die Daten formatiert und gesendet:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure SendData;                //Unit2, wird vom Timer aufgerufen
var CmdSeq: TCmdSeq;
begin
  CmdSeq := TCmdSeq.Create(cmdClientDaten);           //KomandoSequenz erzeugen
  CmdSeq.Add(IntToStr(Player));                  //Den Spieler der sendet eintragen, sowie die Daten seines Autos... 
  CmdSeq.Add(FloatToStr(Cars[Player].Position.x * 100 / Screen.Width));   //X-Koordinate in % 
  CmdSeq.Add(FloatToStr(Cars[Player].Position.y * 100 / Screen.Height));  //Y-Koordinate in %
  CmdSeq.Add(FloatToStr(Cars[Player].Speed.x * 100    / Screen.Width));   //X-Speed in %
  CmdSeq.Add(FloatToStr(Cars[Player].Speed.y * 100    / Screen.Height));  //Y-Speed in %
  PA.Outbound.AddCmdAndFree(CmdSeq);            //KomandsoSequenz in die Outboundliste aufnehmen
  PA.Outbound.SaveToFile('ToServer.log');          //zu debug-zwecken speichern
  PA.Send;                  //und zum schluss senden
end;


dann kommen sie beim Server rein und der schickt sie weiter an alle Clienten:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
cmdClientDaten:          //Server: TNBFPAServer.ExecuteCmd            
  begin
    CmdSeq := TCmdSeq.Create(cmdClientDaten);  //ComandoSequenz erzeugen
    PA.Inbound.SaveToFile('FromClient.log');  //eintreffende Daten zu Debug-Zwecken speichern
    CmdSeq.Add(Pa.Inbound.Strings[1]);    //Daten aus der Inbound Liste übernehmen
    CmdSeq.Add(Pa.Inbound.Strings[2]);
    CmdSeq.Add(Pa.Inbound.Strings[3]);
    CmdSeq.Add(Pa.Inbound.Strings[4]);
    CmdSeq.Add(Pa.Inbound.Strings[5]);
    ServerPA.Broadcast(CmdSeq);      //und an alle Clienten senden
  end;


und bei den Clienten werden sie wieder auseinander genmommen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
cmdClientDaten:          //Client: TForm1.ExecuteCmd  
  begin
    PA.Outbound.SaveToFile('FromServer.log');   //Zu Debug-Zwecken zwischenspeichern
    if StrToInt(PA.Inbound.Strings[1]) <> Player then //Wenn ich nicht derjenige bin der gesendet hat dann...
      begin
        i := StrToInt(PA.Outbound.Strings[1]);  //Player ermitteln der gesendet hat und Daten übernehmen
        Cars[i].Position := Vektor(Screen.Width / 100 * StrToFloat(PA.Inbound.Strings[2]), Screen.Height / 100 * StrToFloat(PA.Inbound.Strings[3]));
        Cars[i].Speed    := Vektor(Screen.Width / 100 * StrToFloat(PA.Inbound.Strings[4]), Screen.Height / 100 * StrToFloat(PA.Inbound.Strings[5]));
      end;
  end;


Anhand der *.log-Datein (im Anhang) kann man auch sehen das die Daten korrekt ankommen.
Also müsste das so gehen, aber es geht nicht. Ich hab das schonma so gemacht und da hat
es gefunzt, deshalb weiß ich jetzt hier nicht weiter...
Einloggen, um Attachments anzusehen!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 10.04.07 19:28 
Moin!

Ich kann das Client-Projekt nicht starten... :? pack doch mal den Inhalt des Ordners material\ in ein ZIP und dann hier in den Anhang (wozu du die EXE drin hast, aber nicht die NOTWENDIGEN Dateien, ist mir auch noch nicht ganz klar... :gruebel:)

cu
Narses

//EDIT: hab mir jetzt dummy-Images erzeugt und das ganze Bass/MPlayer-Zeugs rausgeworfen, um das Projekt überhaupt starten zu können - aber, jetzt habe ich ein komisches Formular ohne Controls und kann nix machen, ausser mit ESC rausgehen... :( WIE KANN MAN DENN DIESES WUNDERVOLLE PROGRAMM ÜBERHAUPT DAZU BRINGEN IRGENDWAS ZU TUN :?!?:

//EDIT2: Dein Code und Programmierstil sind... vorsichtig gesagt... zum :bawling: :hair: (du solltest DRINGEND darüber nachdenken, ob globale Variablen wirklich in der Menge NOTWENDIG sind, in der du sie verwendest; auch was die Performance deines Codes angeht, ist das sicherlich nicht besonders gut, z.B. lädst du viel zu oft Bitmaps von der Platte, warum z.B. keine ImageListen oder OffScreenBitmaps?! du hast auch kaum Sicherheitsleinen im Code...)
Schätze, ich bin trotzdem aus versehen über den entscheidenden Fehler gestolpert: 8) :D
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
// Client, Unit1

procedure TForm1.ExecuteCmd(PA: TProtocolAdapter);
[...]
    cmdClientDaten:
      begin
        PA.Outbound.SaveToFile('FromServer.log');
        if StrToInt(PA.Inbound.Strings[1]) <> Player then begin
          i := StrToInt(PA.Outbound.Strings[1]);
          Cars[i].Position := Vektor(Screen.Width / 100 * StrToFloat(PA.Inbound.Strings[2]), Screen.Height / 100 * StrToFloat(PA.Inbound.Strings[3]));
          Cars[i].Speed    := Vektor(Screen.Width / 100 * StrToFloat(PA.Inbound.Strings[4]), Screen.Height / 100 * StrToFloat(PA.Inbound.Strings[5]));
        end;
      end;

Da muss doch wohl Inbound stehen, oder? :zwinker:

Ich versuche jetzt bestimmt seit 1,5h einfach nur das Projekt (und da auch nur den Client) soweit zu strippen, dass es sich einfach nur starten läßt und nicht sofort bei der kleinsten Aktion irgendwas vor die Wand läuft... :autsch: :roll: Wenn´s das nicht ist, dann fürchte ich, dass ich keine Lust mehr habe, nach weiteren Fehlern zu suchen (sorry, aber dein Code ist mir einfach zu chaotisch, da sucht man sich ja tot)... :| :?

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Do 12.04.07 11:50 
HI,

hab den Fehler auch grad gefunden, eigentlich ganz schön dumm :oops:
Aber jetztmüsste es gehen, werd dann mal n Test durchführen...
Und nun mal zu meinem Code: Ich weiß, das er nicht grad der beste ist, aber
für einen der bloß 12. Klasse InfoGrundkurs is, is das schon n sehr großes
Projekt und zur Zeit hab ich da all mein wissen reingepackt ^^
Das mit den ImageListen hab ich auch probiert, das sah so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var images: array[0..9,0..5of TBitmap;
    CarTex: TBitmap

for i := 0 to 9 do
  for j := 0 to 5 do
    begin
      images[i,j] := TBitmap.Create;
      images[i,j].LoadFromFile('material\cars\car'+IntToStr(i)+'_'+IntToStr(j)+'.bmp');
    end;


CarTex := images[x,y];
RotateBitmap(CarTex,.....


Wenn ich das so mach, dan dreht er die Bitmap die in Images drin ist,
und dann wird die total verunstaltet, da der die nicht neu läd...
Und sowas wie ReadOnly gibts da ja nicht!

MfG Bergmann


p.s.: ich hab den Beitrag zwar schonma geschrieben, aber irgendwie is der wieder weg^^
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 12.04.07 12:04 
Moin!

Nochmal der Hinweis: Warum verwendest du nicht die TNBFPA-Kompos von mir, statt der Unit-Version aus dem Tut?! Das macht es dir sicher etwas einfacher und auch den Code übersichtlicher. ;)

Eigentlich ja neue Frage, neuer Thread! :mahn: Da du das (neue) Thema aber gar nicht angesprochen hast, sondern ich :nut: trotzdem schnell was dazu: ;)

user profile iconBergmann89 hat folgendes geschrieben:
Das mit den ImageListen hab ich auch probiert, das sah so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var images: array[0..9,0..5of TBitmap;
    CarTex: TBitmap

for i := 0 to 9 do
  for j := 0 to 5 do
    begin
      images[i,j] := TBitmap.Create;
      images[i,j].LoadFromFile('material\cars\car'+IntToStr(i)+'_'+IntToStr(j)+'.bmp');
    end;

CarTex := images[x,y]; // --- Fehler! ---
RotateBitmap(CarTex,.....

Du kannst Objekte nicht mit einer direkten Zuweisung kopieren, das geht so: ;) :idea:
ausblenden Delphi-Quelltext
1:
CarTex.Assign(images[x,y]);					

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.


Zuletzt bearbeitet von Narses am Do 12.04.07 20:10, insgesamt 1-mal bearbeitet
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Do 12.04.07 12:25 
AHHH, wieder was dazu gelernt ^^
Werd mir die TNBFPA-Kompos mal ansehen und einbauen, wenns noch
Probleme gibt, oder es dann endlich fertig ist, meld ich mich nochma!

MfG Bergmann.