AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wert aus Klasse nicht verfügbar

Ein Thema von Ruio · begonnen am 22. Dez 2009 · letzter Beitrag vom 24. Dez 2009
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#11

Re: Wert aus Klasse nicht verfügbar

  Alt 23. Dez 2009, 18:10
Zitat von Ruio:
Und zu array[0..999999] of Char;
Ein Dynamisches Array ging da nicht und weil ich nocht weiß wie viel da mal versendet wird ist das erstmal 999999 groß.
Das geht doch eleganter und resourcensparender mit SetString():
Delphi-Quellcode:
procedure Tt4rCore.ReceiveAppMessage(var Msg: TWMCopyData);
var
  sText: string;
begin
...
  SetString(sText, Msg.CopyDataStruct.lpData, Msg.CopyDataStruct.cbData); // Daten in String kopieren
  ReceiveAppMessageCallback(Sender,Action, sText);
end;
fork me on Github
  Mit Zitat antworten Zitat
Ruio

Registriert seit: 6. Nov 2008
89 Beiträge
 
Delphi 2005 Personal
 
#12

Re: Wert aus Klasse nicht verfügbar

  Alt 23. Dez 2009, 20:19
Zitat von sx2008:
Zitat von Ruio:
Und zu array[0..999999] of Char;
Ein Dynamisches Array ging da nicht und weil ich nocht weiß wie viel da mal versendet wird ist das erstmal 999999 groß.
Das geht doch eleganter und resourcensparender mit SetString():
Delphi-Quellcode:
procedure Tt4rCore.ReceiveAppMessage(var Msg: TWMCopyData);
var
  sText: string;
begin
...
  SetString(sText, Msg.CopyDataStruct.lpData, Msg.CopyDataStruct.cbData); // Daten in String kopieren
  ReceiveAppMessageCallback(Sender,Action, sText);
end;
Danke!
Das kommt davon, wenn man noch nicht weiß, was der Code überhaupt macht.

Nur leider bleibt die AV:
Zitat:
---------------------------
t4rappdemosatellite
---------------------------
Zugriffsverletzung bei Adresse 00457C53 in Modul 't4rAppDemoSatellite.exe'. Lesen von Adresse 00000000.
---------------------------
OK
---------------------------
  Mit Zitat antworten Zitat
Ruio

Registriert seit: 6. Nov 2008
89 Beiträge
 
Delphi 2005 Personal
 
#13

Re: Wert aus Klasse nicht verfügbar

  Alt 24. Dez 2009, 10:52
Ich hängs mal an, vielleicht findet jemand den Fehler.
  Mit Zitat antworten Zitat
hugo1990

Registriert seit: 27. Dez 2006
166 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: Wert aus Klasse nicht verfügbar

  Alt 24. Dez 2009, 12:17
Ich würds gern testen, aber leider fehlen mir diese beiden Units:
dirs, HTMLColorConversions

Edit:
beim Codeüberfliegen habe ich den Fehler gefunden:

Delphi-Quellcode:
procedure TMainForm.ReceiveAppMessage(var Msg: TWMCopyData);
begin
  t4r.ReceiveAppMessage(Msg);
end;
Du stellst nicht sicher, dass t4r an dieser Stelle bereits erzeugt wurde. Wenn jetzt eine Nachricht empfangen wird, bevor t4r erzeugt wurde, gibt es eine Zugriffsverletzung.

Das hier sollte Abhilfe schaffen:
Delphi-Quellcode:
procedure TMainForm.ReceiveAppMessage(var Msg: TWMCopyData);
begin
  if t4r <> nil then
    t4r.ReceiveAppMessage(Msg);
end;
oder

Delphi-Quellcode:
procedure TMainForm.ReceiveAppMessage(var Msg: TWMCopyData);
begin
  if t4r = nil then
  begin
    t4r := Tt4r.Create(MainForm.Caption);
    t4r.ReceiveAppMessage(Msg);
  end;
end;
Edit2:
Außerdem solltest du das folgende nicht im OnShow sondern im OnCreate aufrufen:
Delphi-Quellcode:
  t4r := Tt4r.Create(MainForm.Caption);
  t4r.InitForm;
  Mit Zitat antworten Zitat
Ruio

Registriert seit: 6. Nov 2008
89 Beiträge
 
Delphi 2005 Personal
 
#15

Re: Wert aus Klasse nicht verfügbar

  Alt 24. Dez 2009, 12:51
Zitat von hugo1990:
beim Codeüberfliegen habe ich den Fehler gefunden:
[delphi]
Das hier sollte Abhilfe schaffen:
Code:
procedure TMainForm.ReceiveAppMessage(var Msg: TWMCopyData);
begin
  if t4r <> nil then
    t4r.ReceiveAppMessage(Msg);
end;
oder

Code:
procedure TMainForm.ReceiveAppMessage(var Msg: TWMCopyData);
begin
  if t4r = nil then
  begin
    t4r := Tt4r.Create(MainForm.Caption);
    t4r.ReceiveAppMessage(Msg);
  end;
end;
Dann kommen ja die Messages nicht durch bzw. create ichh meine Klasse ja nochmal.
Ich werds ein bisschen umschreiben und nochmal testen.



Edit: Es geht jetzt!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz