Builder spinnt! Panels verschwinden!



  • Benede mal das Projekt in der IDE und starte die App. Schließ ggf. sogar den BCB. Hast du dann auch das Prob? Ich hab meinen BCB3 mal mit 1000 Shape's überlastet. Mit 500 kann ich (meist) einwandfrei in der IDE arbeiten.

    Bzw., hast du mal überprüft, ob das RAM fehlerfrei ist? Man merkt Adressfehler im laufenden Betrieb wohl nicht. Die Auswirkungen können aber wie beschrieben sein.



  • Hi,
    also das Problem mit den "Systemresurcen erschöpft" hab ich außerhalb der IDE nicht! Aber das meine Panels einfach ausgeblendet werden schon! (Hab auch nur 49 Panels!)

    @007:
    Was meinst du? Oder bist du ein Troll?

    Danke

    Alexander Sulfrian



  • übliche verwendungen sind meiner ansicht nach:

    if (sMsg == "OK")
    

    oder

    if (sMsg != "OK")
    


  • Hi,
    naja, ich wlle überprüfen ob sMsg den Wert "!OK" hat (und nicht ob sMsg den Wert "OK" hat bzw. nicht hat)! Alos ich verwende ! nicht al Operator [der ist hier ==] sondern als String!

    Also ich bin mir sicher das ich diese:

    if (sMsg == "!OK")
    

    Vormuliereung nehmen sollte!

    Danke

    Alexander Sulfrian



  • Ähh... was machst du da überhaupt ? Du holst dir in Felder Zeiger auf Images und später setzt du dann das Parent object dieser Bilder die du dynamic nach Panels castest auf irgendwas ?????????????????ß
    merkwürdig...
    Schonmal überprüft ob dein Programm vieleicht wirklich speicher "frisst" und wieviel es braucht ? Wenn objecte verschwinden hört sich das für mich so an als wenn du die mit delete vieleicht aus versehen freigibts.



  • Sehr wahrscheinlich werden die Felder an anderer Stelle auf Hide() gesetzt. Anders macht das Visible-setzen ja nicht unbedingt Sinn. Vielleicht wird Code an unerwarteter Stelle ausgewertet? Sowas ist immer wieder drin. Daraufhin würd ich erst mal alles untersuchen. Im Debugger prüfen oder die Zustände auch mal mit ShowMessage untersuchen. Normalerweise scheint die App nach dem Beenden der Message auf weitere Anweisungen zu warten. Keine Aktion, so ist es sicher auch vorgesehen.

    Genaueres wird man nur sagen können, wenn man den ganzen Code verfolgen kann. Eine Function, die die Message aufgerufen hat, kann ja selbst auch weiterlaufen. Sowas sieht man aus den Codeauszügen nicht.



  • Hi,
    also ich hab mit Einzelschrittverfolgung alles berprüft, er führt nur das aus was er ausführen soll! Naja ich denke mal ich werde morgen mal den Quelltext optimieren! Vielleicht behebt sich das Problem ja von selbst?
    [edit]Achso noch was zum Aufbau: Ich hab suf dem Form1 49 Panels (Panel1 - Panel49) in denen sich je 1 Image (Image4 - Image53) befindet![/edit]

    Danke

    Alexander Sulfrian

    PS: Er führt nur das aus was da oben steht. Definitiv! Deshalb wunderts mich ja so!
    Noch ne Frage: Muss ich nich die TImage * alle noch mit new erzeugen? Fällt mir jetzt gerade ein!

    [ Dieser Beitrag wurde am 16.02.2003 um 22:49 Uhr von Alexander Sulfrian editiert. ]



  • Zum PS: Du kannst die TImage's doch ansprechen. Hast sie vermutlich zur Entwurfszeit erstellt. Solang sie nur aufgerufen werden, brauchst du mit ihnen IMHO gar nichts machen. Sollen sie aber zB. auf Mausereignisse reagieren, wär es sinnvoll, ein tmpImage zu erzeugen und alle in die Function einzubinden. Dann führt genau das die Action aus, das das Maussignal empfängt.

    Nur eins wär wichtig: Falls die Images nicht schon auf dem Panel sind, müßtest du es zu ihrem Parent machen. Sonst bekommst du sie nie drauf. Auch der Wechsel der Image's zwischen den Panels ist via Parent möglich.



  • Hi,
    hab mal nochmal probiert: Es liegt am OnMSG-Event vom TNMMSGServ!
    Zur Sicherheit -> Könnt ihr mal testen ob's bei euch auch so ist:
    1. erste Anwendung
    1.1 Neue Anwendung -> Edit1, Button1 und NMMsg1 drauf!
    1.2 bei NMMsg1 FromName und Host auf 127.0.0.1 setzten
    1.3 bei Button1Click einfach reinschreiben:

    NMMsg1->PostIt(Edit1->Text);
    

    1.4 F9 (Starten!) und laufen lassen

    2. zweite Anwendung
    2.1 Neue Anwendung -> Panel1 und NMMSGServ1 drauf!
    2.2 Panel1 auf Visible = false setzten
    2.3 bei NMMSGServ1 beim OnMsg-Event folgenden Code reinschreiben:

    Panel1->Visible = true;
    ShowMessage("Kontrolle");
    

    2.4 F9

    3. Test
    3.1 bei Edit1 irgendetwas eintragen
    3.2 Button1 betätigen (drauf klicken)
    3.3 bei Anwendung 1 wird das Panel sichtbar!
    3.4 die MessageBox erscheint!
    --> bis jetzt alles in Ordnung
    3.5 OK klicken (in der MessageBox)
    3.6 Panel verschwindet (jedenfalls bei mir) 😮 [was soll das?] 😕

    Das kann ich nach meinen Versuchen nur Umgehen, wenn ich die Parameter der OnMsg Funktion in ein Memo schreibe und dann bei Memo->OnChance die Aktionen vornehme! Hat jemand eine andere Idee?

    Danke

    Alexander Sulfrian

    PS: TNMMsg und TNMMSGServ sind standart mäßig auf der Seite INTERNET zu finden [BCB4 Prof.]
    Test wurde mit BCB4 Prof. getestet!



  • Ich glaube nicht, dass du viel Mitleid für deine FastNet-Probleme erhalten wirst. 😉 Sogar der Hersteller selbst ist offensichtlich nicht besonders begeistert:

    Rather than just use the TNMMsg and TNMMsgServ components, you should try creating your own custom protocol to address the problem(s) you are trying to solve.

    Und das solltest du auch tun, die drei, vier Funktionen von NMMsg wirst du wohl selbst per ClientSocket/ServerSocket implementiert bekommen.


Anmelden zum Antworten