Hallo,
Ich wollte aus Jux ein Chatprogramm erstellen, mit dem Ziel, dass man damit irgendwann durch Firewalls hindurch Dateien verschicken kann. Weil es mir irgendwann zu doof wurde stets, wenn ich mein Protokoll geändert habe, den Quelltext aus dem Server in das Clientprojekt zu kopieren, oder umgekehrt, habe ich in einer seperaten Unit ein Klasse erstellt.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| type Botschaft = class gfhrlch: boolean; befehl: string; absender: string; empfaenger: string; nachricht: string; parameter: string; function MsgToStr: string; procedure CFromStr(eingabe: string); end; |
Dooferweise kommt nun eine Acces-Violation in 00404654 Read of add 00000008.
Die Addressen varieren, je nachdem in welcher Zeile ich eine Eigenschaft der Botschaft verändere.
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: 41:
| procedure Botschaft.CFromStr(eingabe: string); var laeng, zhlr, i: integer; drinnen: boolean; begin {$O-} laeng := length(eingabe); drinnen := false; gfhrlch := false; i := 0; for zhlr := 1 to laeng do begin if drinnen = false then begin if eingabe[zhlr] = '"' then begin drinnen := true; i := i + 1; end; end else if ((eingabe[zhlr] = '"') and (eingabe[zhlr+1] = '|') and (eingabe[zhlr+2] = '#') and (eingabe[zhlr+3] = '+') and (eingabe[zhlr+4] = '|')) or (zhlr = laeng) then begin if (zhlr = laeng) and (eingabe[zhlr] <> '"') then gfhrlch := true; drinnen := false; end else case i of 1:befehl := befehl + eingabe[zhlr]; 2:absender := absender + eingabe[zhlr]; 3:empfaenger := empfaenger + eingabe[zhlr]; 4:nachricht := nachricht + eingabe[zhlr]; 5:parameter := parameter + eingabe[zhlr]; else gfhrlch := true; end; end;{$O-} end; |
Der Fehler tritt auf, egal ob ich das Handle des Objekts, in dem die Eigenschaft geändert werden soll(Der Aufruf "Botschaft.gfhrlch := true" kommt nicht am Parser vorbei: Method identifier expected) oder die Optimierung aus ist. Die Watch kann mir auch nicht weiterhelfen, das Objekt ist in einer anderen Form deklariert und die Klasse kann ich ja nicht auf die Watch setzen...
Wäre super, wenn mir jemand sagen könnte, warum das nicht geht oder wie es besser geht.
Moderiert von
Narses: Topic aus Sonstiges (Delphi) verschoben am Mo 12.04.2010 um 15:38