Seite 3 von 6

Verfasst: 28.01.2007 17:59
von Kaeru Gaman
das steht beides auf seite zwei...

wenn du an deinen anzeigeoptionen rumschraubst, müssen das andere nicht auch getan haben... ;)


ZeHas einwände sind berechtigt:

vernünftiges einrücken und sinnvolle variablenbezeichnung wäre hilfreich.
(dein letztes codeposting dann editieren, nich wieder neu posten, bitte)

ebenso könntest du das problem noch mal ausformulieren,
das ist nämlich schwieriger aus anderen postings zusammenzusuchen,
als codes, die hättest du nicht nochmal posten brauchen...

Verfasst: 28.01.2007 18:08
von ZeHa
Das hier:

1. Der Code sendet einen String
2. Wenn dieser empfangen wird, wird eine .exe geöffnet die ein bild macht und es als gsm.bmp speichert.
3. Dieses Bild wird in ein .PNG Bild umgewandelt und gesendet
4. Die empfangene Datei wird wieder in ein .BMP Bild umgewandelt und geladen.


erläutert nämlich nur, was der Code im technischen Sinne machen soll (und das auch eher grob). Aber schön wäre mal eine Erläuterung des "Big Picture", sprich, um was geht es, was willst Du erreichen. Wenn Du die Beschreibung eines Spiels liest, steht da ja auch eher "Du bist ein Ritter und mußt die Prinzessin retten" und nicht "Du steuerst eine Figur mit den Pfeiltasten und es wird dann auf Kollisionen geprüft und diese dann verarbeitet".

Verfasst: 28.01.2007 19:37
von kiki
Ich möchte ein Programm erzeugen dass den Desktop meines einen Computers (Computer-A) fotographiert und auf Computer-B anzeigt.

Erklärung:

Wenn ich auf ein Symbol drücke wird ein String ("Desktops") von dem Client an den Server gesendet und dieser empfängt es. Wenn der Client den String "Desktops" empfängt wird die Aktion darunter Ausgeführt.

Code: Alles auswählen

If Datenpuffer = "Desktops"
Dann wird mit:

Code: Alles auswählen

RunProgram("C:\Windows\System\loli.exe")
Eine Datei gestartet die alles Fotographiert udn es in "C:\Windows\gsm.bmp" speichert.

Dann wird noch die PNG umgebung geladen (Dazu später mehr).

Als nächstes wird dass Bild "gsm.bmp" dass Vorher Fotografiert und gespeichert wurde geladen.

Mit:

Code: Alles auswählen

SaveImage(image, "C:\mssm.png",#PB_ImagePlugin_PNG)
Wird das Bild im PNG Format gespeichert.

Und:

Code: Alles auswählen

SendNetworkFile(ConnectionID, "C:\mssm.png")
sendet dass Bild Natürlich.

Nun Zum Server: Der Server empfängt das .PNG Bild mit der Schleife:

Code: Alles auswählen

Repeat
      em = ReceiveNetworkFile(ClientID, "C:\empf.png")
      Until em <> 0
Mit:

Code: Alles auswählen

m = LoadImage(#PB_Any, "C:\empf.png")
wird dass Bild geladen und mit:

Code: Alles auswählen

SaveImage(m, "C:\save.bmp" , #PB_ImagePlugin_BMP , 10)
Wird dass Bild wieder zurück in das .BMP Format Convertiert.

Mit dem Letzten Load...Befehl wird dass .BMP-Bild geladen und Der Rest Zeigt dass Bild auf dem PC an.

Problem:

Bis zu dem Befehl der die Datei in dass .PNG Format umwandelt läuftalles Glatt aber dann tritt das Problem auf. Die Datei wird Gesendet und gespeichert und der Debugger Meldet "1" aber trotzdem wird die Datei statt Normalgröße (58,6MB) nur in 16 MB gesteichert. Und ich habe dann bei demBefehl nach dem Laden nämlich Saveimage ein problem, da steht: #Image Gadget not Initalizet.





Edit: Problem gelöst





Ich habe den Code etwas verändert und dass Programm im Unicode-Modus laufen lassen, und jetzt klappts.

Jetzt hab ich aber ein Anderes Problem: Der Code wird ab dem Befehl "If Datenpuffer = "Desktops"" und wenn ich auf Stop drücke passiert auch nichts. :? :(

Ich Poste den Code nocheinmal (Ich weiß auch nciht mehr genau was ich dran Verändert habe). Ich Poste am Besten malden Ganzen Code. Und wie gesagt den Code im Unicode-Modus Kompillieren.

Server:

Code: Alles auswählen

Procedure Tool() 
 ClientID = EventClient() 
If  OpenWindow(0, 50, 100, 300, 500, "Server" , #PB_Window_SystemMenu , 0) 
If CreateGadgetList(WindowID(0)) 
ButtonGadget(1, 10, 15, 250, 30, "Monitor Abbild") 


Repeat 
    EventID = WaitWindowEvent() 
    If EventID = #PB_Event_CloseWindow 
      Quit = 1 
    EndIf 
    If EventID = #PB_Event_Gadget 
    
    
    
      If EventGadget() = 1
      ClientID = EventClient() 
      UsePNGImageDecoder()
      UsePNGImageEncoder()
      SendNetworkString(ClientID, "Desktops")
      Repeat
      em = ReceiveNetworkFile(ClientID, "C:\empf.png")
      Until em <> 0
      m = LoadImage(#PB_Any, "C:\empf.png")
      SaveImage(m, "C:\save.bmp" , #PB_ImagePlugin_BMP)
      
      
      LoadImage(3, "C:\save.bmp" , 0)
      If  OpenWindow(0, 1, 1, 1050, 730, "Arbeit" , #PB_Window_BorderLess |  #PB_Window_Maximize, 0) 
      StickyWindow(0, 0)
      If CreateGadgetList(WindowID(0))
      ImageGadget(200, 1, 1, 1, 1, ImageID(3) , 0)
      Repeat
    Until WaitWindowEvent() = #PB_Event_CloseWindow
      EndIf
      EndIf 
      EndIf 
      
      
 
EndIf 
Until lol = 1
EndIf 
   EndIf 
EndProcedure 



Procedure Net(aso.l)
If InitNetwork() = 0 
  MessageRequester("Error", "Can't initialize the network !", 0) 
  End 
EndIf 

Port = 6880
Buffer = AllocateMemory(1000) 

If CreateNetworkServer(0, Port) 

 
  
  Repeat 
     SEvent = NetworkServerEvent() 
  
    If SEvent 
    
      ClientID = EventClient() 
      
      Select SEvent 
      
        Case 1 
        If Tool()
        EndIf  
        
        Case 3
         
      
        
              
       Case 4
       MessageRequester("Error", "Case 4 ist aktiv", 0)
      
        
    EndSelect 
    EndIf 
    
       Until Quit = 1 
        
         EndIf 
         EndProcedure 
         
;-----------------------------------------------------------------------------------------
         
         
         prThread = CreateThread(@Net(), 456)
Repeat
If WaitThread(prThread)
abc = 5
EndIf 
Until abc = 5  
Client:

Code: Alles auswählen

Procedure Main(Dummy.l)
;-Vorbereiten der Netzwerk-Einstellungen

InitNetwork()

Port = 6880

;-Schleife zur Verbindungs-Herstellung
  Repeat 
  ConnectionID = OpenNetworkConnection("127.0.0.1", Port) 
If ConnectionID 

EndIf 
Delay(100) 
Until ConnectionID <> 0 


Repeat 

    
    ServerID = NetworkClientEvent(ConnectionID) 
    Select ServerID
 
   Case 2 
   Repeat 
   Datenpuffer.s = Space(8) 
   ReceiveNetworkData(ConnectionID, @Datenpuffer, 66) 
   If Datenpuffer = "Desktops"
   Debug mh
   RunProgram("C:\Windows\System\loli.exe")
 Delay(1100)
 UsePNGImageEncoder() 
 
image = LoadImage(#PB_Any,"C:\Windows\gsm.bmp") 
If image 
EndIf 
If SaveImage(image, "C:\mssm.png",#PB_ImagePlugin_PNG)
EndIf 
Delay(1000)
Repeat 
   sm = SendNetworkFile(ConnectionID, "C:\mssm.png")
   Until sm <> 0
   Delay(3000)
 EndIf 
 
   
   ForEver
  
  
  
  
  
  Case 3
  
 
Case 4
MessageRequester("Error", "Can't load the movie...", 0)
 exit = 3
  
  End 
  EndSelect 
  
 Until Quit = 1
 exit = 3
 



EndProcedure 

;----------------------------------------------------------------------------------------


amThread = CreateThread(@Main(), 123)
Repeat
If WaitThread(amThread)
adf = 2
EndIf 
Until adf = 2

Verfasst: 29.01.2007 21:52
von ZeHa
Ich wiederhole mich ungern, aber den Code wird sich keiner durchlesen. Kannst Du den nicht einfach mal vernünftig (!) einrücken, die Variablennamen sinnvoll benennen und nicht "lol", und bitte nicht tonnenweise Leerzeilen reinhauen die keinen tieferen Sinn haben.

Ist mir schon klar, daß Du in diesem Wirrwarr durchblickst (naja ok eigentlich ja eher nicht), aber ein Außenstehender hat echt null Bock sich da zurechtzuwuseln. Das hat sowas von "ich bin selber zu faul meinen Code zu pflegen, aber helft mir jetzt endlich mal".

(Stell Dir vor, Du gehst zu jemandem, um ihm den Rasen zu mähen, aber Du mußt erstmal den Rasenmäher selber suchen, über den Zaun klettern und Dein eigenes Rasenmäher-Benzin mitbringen...)

Verfasst: 29.01.2007 22:02
von Kaeru Gaman
yo, muss ich zustimmen.

es ist eigentlich nicht so schwierig, code sinnvoll einzurücken...
und es gibt massig beispiele, wie man das im allgemeinen macht.
letztendlich machen es eigentlich alle nach dem selben grundprinzip,
also gewöhn es dir ruhig an.

Verfasst: 29.01.2007 22:10
von Kiffi
Die Art und Weise, was und wie kiki postet erinnert mich ein wenig an Leo...

Nachtigall, ick hör dir trapsen!

Grüße ... Kiffi

Verfasst: 29.01.2007 22:18
von Kaeru Gaman
an welchen Leo?

(\_/)
(o.O)
(>§<)

Verfasst: 29.01.2007 22:22
von Kiffi
Kaeru Gaman hat geschrieben:an welchen Leo?
mist! Falsch herum gelesen. Ich meine Joel.

hier: http://www.purebasic.fr/german/viewtopi ... 0319#90319
und hier: http://www.purebasic.fr/german/viewtopi ... 1869#91869

aber egal! So wichtig ist das nun auch wieder nicht.

Grüße ... Kiffi

Verfasst: 29.01.2007 22:25
von Kaeru Gaman
achso... dann is ja gut... ich dachte schon...

(der Leo würde sich nämlich eher die Hand abhacken als so schlecht formatierten code zu posten, und außerdem würde er wahrscheinlich solche Routinchen zwischen Mittagessen und Nachtisch schreiben...)

(\_/)
(n.n)
(> ^)

Verfasst: 30.01.2007 21:12
von Joel
/:-> twisted: :twisted: :evil: :twisted: :evil: Was werden denn hier für seltsahme bemerungen über mich losgelassen????

Ich kann es nur immer wieder sagen (Hab ich auch schonmal geschrieben)
"Ich habe Dazu gelernt"

Euer Leo :lol:


Edit: Aber ganz ehrlich bei so nem Code würde ich auch nichtmehr so richtig durchblicken. :freak:

Vielleicht kennt kiki ja keine anderen Wörter <)