AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi memoinhalte werden in form1.caption geschrieben ?!?!?!
Thema durchsuchen
Ansicht
Themen-Optionen

memoinhalte werden in form1.caption geschrieben ?!?!?!

Ein Thema von Maltimore · begonnen am 26. Mai 2009 · letzter Beitrag vom 26. Mai 2009
Antwort Antwort
Maltimore

Registriert seit: 2. Mär 2008
37 Beiträge
 
#1

memoinhalte werden in form1.caption geschrieben ?!?!?!

  Alt 26. Mai 2009, 16:39
HI, ich hab ja eben schon gepostet, aber mir konnte leider keiner helfen (anscheinend).

Ich hab jetzt noch n problem und zwar lief jetzt alles mit dem progammieren des chats gut, jetzt habe ich bei der ausgabe nur noch eine if abfrage ergänzt (damit sachen, die zum protokoll gehören, nicht in den chat geschrieben werden), und schon verhält sich mein programm absolut ABSURD. aber wirklich total bekloppt!
Es ist nun nämlich so, dass die sachen, die eigentlich ins memo geschrieben werden sollen, ins form1.caption geschrieben werden. wie kann das denn bitte sein? ist der fehler bekannt oder bin ich der einzige bei dem sich das so verhält?

hier der code der dafür verantwortlich sein sollte:

Delphi-Quellcode:
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
  var k, i: integer;
begin
Form1.Show;
text := socket.receivetext;
if text[1] <> ',then
  Memo1.Lines.Add(Socket.ReceiveText)
vielen dank,

maltimore
  Mit Zitat antworten Zitat
Gargoyl

Registriert seit: 11. Mär 2007
69 Beiträge
 
#2

Re: memoinhalte werden in form1.caption geschrieben ?!?!?!

  Alt 26. Mai 2009, 16:50
Zitat von Maltimore:
Delphi-Quellcode:
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
  var k, i: integer;
begin
  Form1.Show;
  text := socket.receivetext; // <-- hier ist der Fehler
  if text[1] <> ',then
    Memo1.Lines.Add(Socket.ReceiveText)
wenn du einfach nur text schreibst, dann setzt du die Caption der Form. Ist wie wenn du Form1.Text oder Form1.Caption schreibst. Benenne deine Variable mal um, z.B. sText statt text, dann stehst auch nicht mehr in der Caption.

Gargoyl
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

Re: memoinhalte werden in form1.caption geschrieben ?!?!?!

  Alt 26. Mai 2009, 16:51
Hallo maltimore,

zunächst, wo hast Du "text" definiert?
ich schlage vor, daß Du text als lokale Variable definierst.
Dann solltest Du mindestens mit length(text) überprüfen ob text[1] nicht in die Botanik zeigt.

Das Verhalten, das Du beschreibst, kenne ich sonst nur aus alten DOS-Zeiten wo mit Zeigern und wilden Variablenredefinitionen Speicherplatz gespart wurde bis es quietschte. Da haben sich schon einmal zwei Variablen den gleichen Speicher geteilt wenn man nicht aufpasste.

Gruß
K-H

Oh mann, an .text=.caption hatte ich gar nicht mehr gedacht!
  Mit Zitat antworten Zitat
Maltimore

Registriert seit: 2. Mär 2008
37 Beiträge
 
#4

Re: memoinhalte werden in form1.caption geschrieben ?!?!?!

  Alt 26. Mai 2009, 18:21
Hey super, echt klasse Leute!
Jetzt wird es nicht mehr in die Caption geschrieben, sondern nirgendwohin. also auch nicht ins memo?! Aber macht euch da lieber keine Gedanken drum, nicht dass es am ende an einer ganz anderen Stelle gehakt hat die ihr gar nicht sehen könnt. Ok also das war schon mal glaub ich n Erfolg, ich werde jetzt überall im Programm showmessages machen, die mich über das Verhalten der Variablen aufklären ^^.

Also nochmals, vielen Dank, und wenn ich den Fehler nicht finde melde ich mich einfach noch mal

Maltimore
  Mit Zitat antworten Zitat
Gargoyl

Registriert seit: 11. Mär 2007
69 Beiträge
 
#5

Re: memoinhalte werden in form1.caption geschrieben ?!?!?!

  Alt 26. Mai 2009, 18:54
Probiers doch mal hiermit:
Delphi-Quellcode:
procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
var
  k, i: integer;
  sText : String;
begin
  Form1.Show;
  sText := socket.receivetext;
  if sText[1] <> ',then
    Memo1.Lines.Add(sText)
  (...)
vielleicht klappt es ja. Ich weiss leider nicht was genau du da machst und was an die Socket geschickt wird und welchen Regeln es folgt. Weil du liest ja socket.receivetext 2-mal aus in deinem Code-Snipet und ich geh einfach mal davon aus dass das falsch ist, weil beim 2ten lesen ja nicht nochmal was an die Socket geschickt wurde.
  Mit Zitat antworten Zitat
Maltimore

Registriert seit: 2. Mär 2008
37 Beiträge
 
#6

Re: memoinhalte werden in form1.caption geschrieben ?!?!?!

  Alt 26. Mai 2009, 20:54
Was?

Ich hab zwar nicht verstanden, warum, aber es klappt. Daaaaankeee!! Oh man ich hab echt schon das schlimmste befürchtet, dass ich das ganze programm noch mal umstellen muss. Super. Danke!!

Aber jetzt bin ich natürlich neugierig geworden (hab noch nie in meinem Leben irgendwas mit sockets gemacht):

Warum kann ich denn socket.received text nicht in zwei variablen (sozusagen) abspeichern? wieso sollte sich das denn noch ändern?

Mfg,

Maltimore
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: memoinhalte werden in form1.caption geschrieben ?!?!?!

  Alt 26. Mai 2009, 20:58
Weil Text eine Eigenschaft der Form ist. Daher hast du nicht auf deine lokale Variable Text, sondern auf Form1.Text zugegriffen. Deswegen gibts auch noch so Bezeichner wie Self.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Gargoyl

Registriert seit: 11. Mär 2007
69 Beiträge
 
#8

Re: memoinhalte werden in form1.caption geschrieben ?!?!?!

  Alt 26. Mai 2009, 21:15
Zitat von Maltimore:
Aber jetzt bin ich natürlich neugierig geworden (hab noch nie in meinem Leben irgendwas mit sockets gemacht):

Warum kann ich denn socket.received text nicht in zwei variablen (sozusagen) abspeichern? wieso sollte sich das denn noch ändern?
Stell dir das wie einen Stack vor. Wenn du was wegnimmst, ist es weg. Basta! Anders wäre ja auch doof. Stell dir vor du bekommst in regelmäßigen Abständen etwas an deine Socket geschickt, z.B. jede Sekunde eine neue Text Zeile. Wenn du mit .receiveText immer nur die erste Zeile bekommen würdest, wie würdest du dann die 2te, 3te und alle folgenden Zeilen bekommen? Deshalb: Sobald du die erste Zeile mit .receiveText 'abgeholt' hast, wird sie gelöscht und beim nächsten Aufruf von .receiveText bekommst du die 2te Zeile zurückgeliefert. Eben wie bei einem Stack (ich glaube genau genommen wird es sogar ein Stack sein *g*). Es gibt noch ähnliche Sachen, wie z.B. die Windows Messages, wenn du eine Nachricht gelesen hast, ist sie auch weg und beim nächsten aufruf bekommst du die 2te Nachricht zurückgeliefert. Wobei es bei den Windows Nachrichten eine MessagePreview Funktion gibt die die Nachricht zurück liefert, aber nicht löscht. Vielleicht gibt es sowas auch bei deiner Socket, k/A müsste ich Delphi installieren um nachkucken zu können. Aber einmal gelesen ist es bei .receiveText eben weg. Ist genauso beim Einlesen von einer Datei. Wenn du was gelesen hast, geht die Position innerhalb der Datei auch um den Wert weiter wieviel du gelesen hast.
  Mit Zitat antworten Zitat
Maltimore

Registriert seit: 2. Mär 2008
37 Beiträge
 
#9

Re: memoinhalte werden in form1.caption geschrieben ?!?!?!

  Alt 26. Mai 2009, 21:43
Ah ok, danke Gargoyle, das hört sich sinnig an! Quendoline, ich hab mich wohl etwas verwirrend ausgedrückt, ich meinte schon gar nicht mehr das mit dem text, aber trotzdem danke

So damit hätt ich das also alles verstanden.

Dann noch mal was offtopickiches:

Ich hab ja jetzt beim chat unten das editfeld für die nachrichten und daneben den button senden. jetzt will ich natürlich aber, dass man schon beim druck auf enter das was beim klick auf button gemacht wird, ausgeführt wird. wie mach ich denn das?

Eine idee wäre, ins onkeydown ereignis zu gehen, jedes mal abzufragen ob die taste enter war, un dann bei enter das halt zu machen. ist find ich aber n bisschen aufwendig, oder? Und was ist eigntlich dieser "Code" für die Taste enter? Das müsste ja sowas mit VK_ vorne sein ich kenn mich damit auch überhaupt nicht aus ^^

Vielen Dank schon im Voraus,

Maltimore
  Mit Zitat antworten Zitat
Gargoyl

Registriert seit: 11. Mär 2007
69 Beiträge
 
#10

Re: memoinhalte werden in form1.caption geschrieben ?!?!?!

  Alt 26. Mai 2009, 22:11
Äh also hier gilt neue Frage = neuer Beitrag, bzw. für nur eine Frage pro Beitrag.

[EDIT]Lösung wieder rausgelöscht. Stell die Frage in einem neuen Beitrag und ich poste die Lösung dort.[/EDIT]
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:26 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