AGB  ·  Datenschutz  ·  Impressum  







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

fehler globale variable/lokale variable

Ein Thema von ToXiC · begonnen am 13. Okt 2008 · letzter Beitrag vom 13. Okt 2008
Antwort Antwort
ToXiC

Registriert seit: 28. Okt 2007
52 Beiträge
 
Delphi 2005 Personal
 
#1

fehler globale variable/lokale variable

  Alt 13. Okt 2008, 14:29
ich habe folgendes problem:
ich habe den unten beigelegten code aus dem netz & habe ihn leicht abgeändert.
nun wollte ich die globalen variablen lokalisieren, da sie nur ein einer einzige proceudre verwendet werden.
das programm lässt sich ohne weiteres kompilieren, spuckt jedoch nach abshcluss der kompilierung eine fehlermeldung der form aus:

http://img3.imagebanana.com/img/bhd7...humb/error.PNG

sinnlose zeichenketten.
sobald man ok bestätigt folgt eine weitere solche fehlermeldung, was sich entlos fortsetzt.

eigentlich ist es nicht relevant, ob die die variablen letztendlich global oder lokal anlege, doch ich würds schon gern verstehn^^.



Delphi-Quellcode:
unit Unit1;
...
  private
  Reciving: boolean;
  DataSize: integer;
  Data: TMemoryStream;
...


procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
var
  s, sl: string;
  TmpJpg : TJPEGImage;
begin
  s:= Socket.ReceiveText;
  TmpJpg := TJPEGImage.Create;
  if not Reciving then
  begin
    SetLength(sl, StrLen(PChar(s))+1); // +1 for the null terminator
    StrLCopy(@sl[1], PChar(s), Length(sl)-1);
    DataSize:= StrToInt(sl);
    Data:= TMemoryStream.Create;
    Delete(s, 1, Length(sl));
    Reciving:= true;
  end;
  try
    Data.Write(s[1], length(s));
    if Data.Size = DataSize then
    begin
      Data.Position:= 0;
      TmpJpg.LoadFromStream(Data);
      Image2.Picture.Assign(TmpJpg);
      Data.Free;
      TmpJpg.Free;
      Reciving:= false;
      Socket.Close;
    end;
  except
    Data.Free;
    TmpJpg.Free;
  end;
end;
Chris
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: fehler globale variable/lokale variable

  Alt 13. Okt 2008, 16:22
Die gezeigten Variablen dürfen nicht lokal für die Methode ClientSocket1Read sein, da sie ihren Wert nicht verlieren dürfen.
ClientSocket1Read wird nicht nur einmal sondern unter Umständen mehrmals ausgerufen.
Grund: die Daten können in mehrere Netzwerkpaketen verpackt sein -> mehrere Aufrufe.
Ob die ganzen Daten in einem Rutsch oder verteilt auf mehrere Pakete kommen, darauf hast du keinen Einfluss, denn das regelt Windows und auch der Datensender.
Andreas
  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 05:57 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