| Autor |
Beitrag |
Tristan
      
Beiträge: 106
|
Verfasst: Di 06.06.06 14:26
Hallo,
[Vorwort]
ich habe im Monent leider ein sehr dringendes Problem. Und zwar muss ich morgen meine Jahresarbeit www.delphi-forum.de/...52829&highlight=vor einem Komitee vorstellen und bewerten lassen. Als ich heute jedoch einen Probelauf mit den Laptops der Schule machte funktionierte rein gar nix, ihr könnt euch vorstellen dass es morgen relativ plamabel wäre
Man opfert über ein Jahr seine Freizeit für dieses Projekt und dann scheitert die gesamte Programmvorführung an einem Connectionsproblem. Gestern abend lief alles wunderbar, in meinem Netzwerk. Als ich dann heute früh einen Test ohne Verbindung zum Internet startete, lief nichst. Es scheitert glaube ich immer an der Hostauflösung bzw. DNS.
[Funktionierende Konfiguration]
Mein Rechner ist mit einem Swtich und einem Notebook gekoppelt. Der Switch hängt an einem Router und verbindet mich mit dem Internet.
IP Einstellungen (Mein Rechner):
IP Adrs. 192.168.1.3
Subnetmaske: 255.255.255.0
Standartgateway: 192.168.1.1 (Das ist der Router)
Bevorz. DNS: 192.168.1.1
-NetBios über TCP/IP aktivieren
IP Einstellungen (Notebook):
IP Adrs. 192.168.1.7
Subnetmaske: 255.255.255.0
Standartgateway: 192.168.1.1 (Das ist der Router)
Bevorz. DNS: 192.168.1.1
-NetBios über TCP/IP aktivieren
Alles funktioniert wunderbar.
jetz wird die Verbindung zwischen Switch und Router getrennt und der gateway+dns ausgetragen:
[Nichtfunktionierende Konfiguration]
IP Einstellungen (Mein Rechner):
IP Adrs. 192.168.1.3
Subnetmaske: 255.255.255.0
Standartgateway:
Bevorz. DNS:
-NetBios über TCP/IP aktivieren
IP Einstellungen (Notebook):
IP Adrs. 192.168.1.7
Subnetmaske: 255.255.255.0
Standartgateway:
Bevorz. DNS:
-NetBios über TCP/IP aktivieren
Fehler: Kein Befehl wird übertragen stattdessen kommt immer nur eine "Leerzeile" an. In meiner Log steht, "Server nicht gefunden oder verbindung nicht akzeptiert" Teilweise kommt auch etwas an, das dauert aber 20-30sekunden.
Der Code zum Senden und Empfangen sieht wie folgt aus:
[Steuerprogramm]
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| <span style="color: blue">With BefehleSocket do Begin Active:=False; Host:=ListView1.Selected.Caption; (In dieser Liste steht der Host z.b. "Station1" Active:=True; End; <span style="color: blue"> var text:string;
text:=InputBox('Nachricht schicken', '', ''); text:='Nachricht'+text; Befehlesocket.Socket.SendText(text);
<span style="color: blue">procedure TForm1.BefehlesocketRead(Sender: TObject; Socket: TCustomWinSocket); var ReceiveStatus:string; begin ReceiveStatus:=Socket.ReceiveText;
if Pos('Status',receivestatus)>0 then begin Delete(receiveStatus,1,6); StatusBar2.Panels[1].Text:=ReceiveStatus; Logmemo.Lines.Add(TimetoStr(Time) + ' ' + ReceiveStatus); end; end; |
[Teilnehmerprogramm]
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| <span style="color: blue"> procedure TForm1.BefehlesocketClientRead(Sender: TObject; Socket: TCustomWinSocket); var receivetext:string; begin receiveText:=Socket.ReceiveText); Aktionen.receiveText:=receivetext; <span style="color: red">-->hier kommt teilweise eine Leerzeile an?!</span>
Aktionen.Status;
if pos('Nachricht',receivetext)=1 then Aktionen.Nachricht;
end; |
Bitte helft mir dieses Problem zu beseitigen. Ich muss das Programm morgen um 7:30Uhr vorstellen. Ich somit nur noch "wenige" Stunden.
Danke jede Antwort ist willkommen.
Zuletzt bearbeitet von Tristan am Di 06.06.06 14:31, insgesamt 1-mal bearbeitet
|
|
Tristan 
      
Beiträge: 106
|
Verfasst: Di 06.06.06 14:29
hat das irgendwas mit der DNS Auflösung vom Router zu tun?
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 06.06.06 14:59
Moin!
Tristan hat folgendes geschrieben: | | hat das irgendwas mit der DNS Auflösung vom Router zu tun? |
Ja, schätze ich mal; wenn du kein DNS hast, kannst du auch keine Hostnamen ("Station1") auflösen.
Nimm mal die IPs der Rechner, nicht die Namen, dann sollte das auch ohne DNS klappen.
cu
Narses
//EDIT: wenn ich mir so deinen (Empfangs-)Code ansehe, dann fürchte ich, du hast das hier noch nicht gelesen... 
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Tristan 
      
Beiträge: 106
|
Verfasst: Di 06.06.06 15:19
@Narses: Nein dein Tutorial kenne ich leider noch nicht. Ich habe mich jezt mal kurz reingelesen und muss sgane dass ist ja wirklich sehr umfangreich was du da zusammengestellt hast. Du verwendest ja das Trennzeichen #13. Bei mir wird der Befehl immer mit Pos rausgesucht. Das ist sicherlich verbesserungswürdig.
Könntest du mir trotzdem helfen, eine möglichst einfache, schnelle Variante zu finden das mein Code wieder funktioniert?
Oder müsste ich nur Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| With BefehleSocket do Begin Active:=False; Host:=ListView1.Selected.Caption; (In dieser Liste steht der Host z.b. "Station1" Active:=True; |
mit Delphi-Quelltext 1: 2: 3: 4: 5:
| With BefehleSocket do Begin Active:=False; adress:='192.168.1.3'; (hier muss die IP rein?) Active:=True; |
ersetzen.
Und wie löse ich die Hosts dann in IP Adressen auf?
Gruß Tristan
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 06.06.06 15:26
Moin!
Tristan hat folgendes geschrieben: | | Könntest du mir trotzdem helfen, eine möglichst einfache, schnelle Variante zu finden das mein Code wieder funktioniert? |
Ich hab kein Problem damit, wenn du nicht auf meine Tuts zurückgreifst.  Ich möchte dich nur darauf gefasst machen, dass es da Probleme geben kann - und wenn dein Lehrer genau da den Finger drauf legt, könntest du (unvorbereitet) ins "Schleudern" kommen...
Tristan hat folgendes geschrieben: | Oder müsste ich nur
[...]
mit
Delphi-Quelltext 1:
| adress:='192.168.1.3'; (hier muss die IP rein?) |
ersetzen. |
Ja, das sollte reichen.
Tristan hat folgendes geschrieben: | | Und wie löse ich die Hosts dann in IP Adressen auf? |
Kurz gesagt, gar nicht.  Ohne DNS, keine IPs zu Hostnamen  keine Arme, keine Kekse...
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Tristan 
      
Beiträge: 106
|
Verfasst: Di 06.06.06 15:55
Tristan hat folgendes geschrieben: | Delphi-Quelltext 1: 2: 3: 4: 5:
| With BefehleSocket do Begin Active:=False; adress:='192.168.1.3'; (hier muss die IP rein?) Active:=True; |
ersetzen... |
Funktioniert leider auch nicht - es kommen wieder nur "Leerzeilen" an
Mit dem Lehrer ist das nicht ganz so schlimm nur ich möchte wenigstens die Funktionen zeigen die immer funktioniert haben. Und das geht im Moment leider noch nicht Warum auch immer
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 06.06.06 16:03
Moin!
Firewall, Virenscanner, etc. pp., die "üblichen Verdächtigen" halt als Ursache schon ausgeschlossen?
Ansonsten: pack mal den Code als ZIP hier rein, mit den paar Fragmenten da oben kann ich nicht wirklich was anfangen.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Tristan 
      
Beiträge: 106
|
Verfasst: Di 06.06.06 16:28
du hast Post 
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 06.06.06 16:42
Moin!
Klassisches Problem: du sendest bereits, ohne auf ein entsprechendes Connect-Ereignis gewartet zu haben. Guckst du.
Das sollte es schon bringen, schätze ich. Hab noch nicht viel weiter gelesen, weil das ist auf jeden Fall erstmal ein Fehler. Gib mal Laut.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Tristan 
      
Beiträge: 106
|
Verfasst: Di 06.06.06 17:21
Das senden von Befehlen erfolgt in meiner Software aber eiegentlich getrennt. Dass heißt man verbindet sich mit dem Client wenn man auf das Item klickt und wenn man dann einen Button drückt, wird der Text zum Client gesendet. Es ist damit eigentlich eine recht große Pause zwischen connecten und senden.
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 06.06.06 17:26
Moin!
Und woher weißt du denn, dass du verbunden bist? Du reagierst ja nicht auf ein OnConnect (z.B: um die Buttons zu enablen...)?
//EDIT: Was aber vermutlich sehr viel schlimmer ist, ist die Tatsache, dass du dich implizit auf die Ereignisse als Signalisierung verläßt (mein Link in die FAQ oben), das solltest du auf jeden Fall mit einem Buffer (z.B. ein String, der die empfangenen Zeichen sammelt) absichern. Noch besser wäre natürlich ein Protokoll, aber dafür wird dir jetzt einfach die Zeit fehlen, schätze ich...
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Tristan 
      
Beiträge: 106
|
Verfasst: Di 06.06.06 19:48
Nabend Narses,
ich hab mir dein Chatprogramm mal näher angeschaut.
bei mir siehts jetzt so aus:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.BefehlesocketClientRead(Sender: TObject; Socket: TCustomWinSocket); var receivetext, befehl:string; i:Integer; begin i := Clients.Items.IndexOfObject(Socket); if (i > -1) then begin ReceiveBuffer.Strings[i] := ReceiveBuffer.Strings[i] +Socket.ReceiveText; if (ReceiveBuffer.Strings[i] <> '') then Memo1.lines.addstrings(receivebuffer) |
Das Memofeld beim Client hingegen so:
Quelltext 1: 2: 3: 4: 5:
| Nachrichtb
NachrichtbSperren
NachrichtbSperrenShutdown2 |
Wie kann ich die Befehle nun einzeln, in der richtigen Reihenfolge verarbeiten. Bzw. wie funktioniert das mit diesem trennzeichen?
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 06.06.06 19:54
Moin!
Du mußt an den einzelnen Datenfeldgrenzen ein Trennzeichen einfügen, z.B. das vorgeschlagene #13. Dann kannst du mit .Text der TStringList das ganze zerlegen (hat aber einen kleinen Haken -> siehe Tut). Besser ist die TParserStringList aus dem Tut, aber es macht hier jetzt sicher keinen Sinn, das Tut nochmal aufzurollen...  Dann kannste das auch gleich lesen.
cu
Narses
//EDIT: Ich hab nochmal deinen Code überflogen (muß ja nicht, dass du damit morgen auf der Nase liegst  ), und ich würde sagen, dass dein bisheriger "Protokoll-Ersatz" sich eigentlich locker in 2-3h auf einen Protokoll-Parser wie in meinem Tut vorgestellt, umrüsten läßt. Ich kenne aber dein Projekt zu wenig, um das mal eben machen zu können - jedenfalls nicht mal eben.
Versuch das umzusetzen, bei Fragen hier melden, ich will sehen, was ich machen kann.
//EDIT2: Ach ja, deine Testausgabe läßt mich stark vermuten, dass es sich tatsächlich um das Signalisierungs-Problem (wie im FAQ-Beitrag dargestellt) handelt. Vielleicht so zur Beruhigung, dass du an der "richtigen" Stelle bastelst. 
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Tristan 
      
Beiträge: 106
|
Verfasst: Di 06.06.06 20:09
Ich bin schon die ganze Zeit dabei
[Teilnehmer/Client]
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46:
| procedure TForm1.BefehlesocketClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin clients.AddItem(Socket.RemoteHost,socket); ReceiveBuffer.Add(''); end;
procedure TForm1.BefehlesocketClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin if Errorcode<>0 then Begin statuslabel.Caption:='B.Socket: '+NetErrMessage(ErrorCode); LogFile('ERROR Befehle Socket: '+NetErrMessage(ErrorCode)); end; errorcode:=0; end;
procedure TForm1.BefehlesocketClientRead(Sender: TObject; Socket: TCustomWinSocket); var receivetext, befehl:string; i:Integer; begin Aktionen.receiveText:=receivetext; i := Clients.Items.IndexOfObject(Socket); if (i > -1) then begin ReceiveBuffer.Strings[i] := ReceiveBuffer.Strings[i] +Socket.ReceiveText; Memo1.Text:=ReceiveBuffer.Strings[i];
if (ReceiveBuffer.Strings[i] <> '') then Memo1.lines.add('fertig'); end;
receiveText:=Befehl; Aktionen.receiveText:=Befehl;
Aktionen.Status;
if pos('Nachricht',receivetext)=1 then Aktionen.Nachricht;
Aktionen.Sperren; ... end; |
[Steuerprogramm/Server]
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51:
| dxWinXPBar2.Enabled:=false; With BefehleSocket do Begin if active=true then close; Host:=ListView1.Selected.Caption; open; End;
procedure TForm1.BefehlesocketConnect(Sender: TObject; Socket: TCustomWinSocket); begin Statusbar2.Panels[0].Text:='Verbunden mit: '+ Socket.RemoteHost; ReceiveBuffer:=''; dxWinXPBar2.Enabled:=true; end;
procedure TForm1.BefehlesocketError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin dxWinXPBar2.Enabled:=false; if Errorcode<>0 then LogMemo.Lines.Add('Socket Verbindung: '+NetErrMessage(ErrorCode)); errorcode:=0; end;
procedure TForm1.BefehlesocketRead(Sender: TObject; Socket: TCustomWinSocket); var ReceiveStatus:string; begin ReceiveStatus:=Socket.ReceiveText;
if Pos('Status',receivestatus)>0 then begin Delete(receiveStatus,1,6); StatusBar2.Panels[1].Text:=ReceiveStatus; Logmemo.Lines.Add(TimetoStr(Time) + ' ' + ReceiveStatus); end; end;
procedure TForm1.dxWinXPBar2Items2Click(Sender: TObject); var text:string; begin text:=InputBox('Nachricht schicken', '', ''); text:='Nachricht'+text; Befehlesocket.Socket.SendText((text)+#13); end; |
so siehts im Moment aus. Ich versuche gerade irgendwo die Befehle zu trennen aber das klappt noch nicht.
Krieg schon langsam zittrige Augen von dem Anstarren des Quellcodes über stunden....
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 06.06.06 20:19
Moin!
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| dxWinXPBar2.Enabled := FALSE; With BefehleSocket do Begin if active=true then close; Host:=ListView1.Selected.Caption; open; End; |
Das darfst du so nicht machen, das knallt. Immer auf die Ereignisse warten...
Weiter mit einem Tipp:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.dxWinXPBar2Items2Click(Sender: TObject); var text:string; begin text:=InputBox('Nachricht schicken', '', ''); text:='Nachricht'+#13+text+#13; Befehlesocket.Socket.SendText(text); end; |
So muss das ungefähr laufen, dann haste die einzelnen Elemente in der Stringliste des Empfängers in einzelnen Strings (mit dem Protokoll-Parser).
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Tristan 
      
Beiträge: 106
|
Verfasst: Di 06.06.06 22:19
Narses hat folgendes geschrieben: | Moin!
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| dxWinXPBar2.Enabled := FALSE; With BefehleSocket do Begin if active=true then close; Host:=ListView1.Selected.Caption; open; End; |
Das darfst du so nicht machen, das knallt. Immer auf die Ereignisse warten...
|
Wie kann ich denn das Ereignis abgreifen? Bzw. darauf warten bis die Verbindung wirklich beendet ist.
Achso und ich hänge gerade wieder an der Bufferliste. Ich bekomms irgendwie nicht gebacken. Die Variante mit deinem Bufferprotokoll bekomme ich auf die Schnelle leider nicht hin. Wie gesagt, das Teil soll morgen halbwegs funktionieren. Ob ein paar Fehler drinne sind ist egal, aber besser als gar nichts so wie es gerade der Fall ist. Ist echt ne richtig miese Situation, dass der Fehler mir erst gestern abend aufgefallen ist.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| i := Clients.Items.IndexOfObject(Socket); if (i > -1) then begin ReceiveBuffer.Strings[i] := ReceiveBuffer.Strings[i] +Socket.ReceiveText; commands.Text:=ReceiveBuffer.Strings[i];
if (ReceiveBuffer.Strings[i] <> '') then begin For i:=commands.Count-1 downto 0 do Begin
receivetext:=commands.Strings[i]; memo2.Lines:=commands; |
Wenn ich eine Liste mit Befehlen habe (commands) die z.B. wie folgt aussieht:
sperren
nachricht:test
herunterfahren
wie kann ich die abarbeiten bzw. die schon ausgeführten Befehle löschen.
ich dachte eigenltich mit for i:=commands.count-1 downto 0 do
Begin
if pos('sperren',commands.strings[i])>0 then
Begin nachrichtanzeigen etc. commands.delete(i) end.
End;
Wie gesagt soll nur halbwegs funktionieren, ich mach mir langsam nen Knoten ins Gehirn. Die präsentation für morgen muss ich mir auch noch reinziehen
|
|
Tristan 
      
Beiträge: 106
|
Verfasst: Di 06.06.06 22:28
mir ist gerade noch eine "unsaubere" Lösung eingefallen: was ist, wenn ich einen timer mit 500ms den ReceiveText des Sockets abfragen lasse? Dann bin ich unabhängig vom Ereignis und bekomme als strings? oder lieg ich da falsch
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 06.06.06 22:48
Moin!
Tristan hat folgendes geschrieben: | | mir ist gerade noch eine "unsaubere" Lösung eingefallen: was ist, wenn ich einen timer mit 500ms den ReceiveText des Sockets abfragen lasse? Dann bin ich unabhängig vom Ereignis und bekomme als strings? oder lieg ich da falsch |
Kurz gesagt: ja.  Der Timer-Ansatz verlagert die Problematik nur, aufheben kannst du das nicht. Dafür erzeugst du dann massig CPU-Last...
Tristan hat folgendes geschrieben: | | Wie kann ich denn das Ereignis abgreifen? Bzw. darauf warten bis die Verbindung wirklich beendet ist. |
Der "Trick" ist, den Button nur dann anklickbar zu machen, wenn die Verbindung sicher getrennt oder sicher hergestellt ist. Dazu eine Variable nehmen, die 3 Zustände haben kann: (getrennt, schwebend, verbunden) -> Button nur anklickbar, wenn Var = getrennt | verbunden. Var-Zustand ändern in den Ereignissen: OnConnect, OnDisconnect, OnError (siehe Tut, da läuft das auch so).
Tristan hat folgendes geschrieben: | | Achso und ich hänge gerade wieder an der Bufferliste. Ich bekomms irgendwie nicht gebacken. Die Variante mit deinem Bufferprotokoll bekomme ich auf die Schnelle leider nicht hin. |
Das ist schade, wird dann aber wohl so sein.
Tristan hat folgendes geschrieben: | | Wie gesagt, das Teil soll morgen halbwegs funktionieren. |
Hmm, knapp daneben ist auch vorbei  halb-funktionierend ist auch kaputt...
Tristan hat folgendes geschrieben: | | Ob ein paar Fehler drinne sind ist egal, aber besser als gar nichts so wie es gerade der Fall ist. |
Du brauchst einfach einen wasserdichten Puffer-Ansatz; wie der konkret aussieht, ist egal; ob´s jetzt mit dem Code aus dem Tut läuft oder mit anderem, die funktionalen Elemente müssen drin sein, sonst wird das nix. Da hapert´s aber bei dir noch, fürchte ich.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| i := Clients.Items.IndexOfObject(Socket); if (i > -1) then begin ReceiveBuffer.Strings[i] := ReceiveBuffer.Strings[i] +Socket.ReceiveText; commands.Text:=ReceiveBuffer.Strings[i]; |
Tristan hat folgendes geschrieben: | Wenn ich eine Liste mit Befehlen habe (commands) die z.B. wie folgt aussieht:
sperren
nachricht:test
herunterfahren
wie kann ich die abarbeiten bzw. die schon ausgeführten Befehle löschen. |
Das kriegst du nur hin, wenn du irgendwo die Anzahl der Argumente greifbar hast -> Syntax[]-Array aus dem Tut.
Tristan hat folgendes geschrieben: | ich dachte eigenltich mit for i:=commands.count-1 downto 0 do
Begin
if pos('sperren',commands.strings[i])>0 then
Begin nachrichtanzeigen etc. commands.delete(i) end.
End; |
Das kannst du mit einer for-Schleife nicht leisten, du mußt das doch von vorne durchgehen. Also: while-Schleife -> das wiederum bringt uns auf die Anzahl Argumente im Kommando -> Syntax[]-Array.
Sorry, aber du kannst nicht Teile des Protokoll-Ansatzes verwenden, auch nicht mit der "hauptsache läuft bischen"-Vorstellung. Das Tut baut da logische Abhängigkeiten auf, die ineinander greifen, das kann man eigentlich nur ganz-oder-garnicht verwenden, sonst funktioniert es genauso wenig, wie dein Code bisher. Worauf ich hinaus will: hör auf, an dem Code rumzudoktoren und zieh dir das Tut in den wesentlichen Teilen rein (hab ich dir schon genannt), dann kannst du das vielleicht noch umsetzen.
Alternative: nimm deine Testumgebung von zuhause mit in die Schule; wenn´s darauf lief, dann läuft´s auch dort. Wenn´s nur darauf ankommt, dass es genau morgen einmal läuft, was soll´s... ?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Tristan 
      
Beiträge: 106
|
Verfasst: Di 06.06.06 23:31
ich habe nun doch die Timervariante genommen. Damit gehts -zumidnest auf 2 PCs. Wenn dies morgen halbwegs läuft bin ich zufrieden. Hauptsache es funktioniert überhaupt. In den nächsten Tagen und Wochen werd ich dann dein Tut lesen und das Programm völlig neustruktorieren.
Ich danke euch für alles - ich geh langsam aber sicher ins Bett 
|
|
Tristan 
      
Beiträge: 106
|
Verfasst: So 11.06.06 11:31
Übrigens das Programm lief am Tag der Präsentation einwandfrei. War alles soweit in Ordnung. Danke nochmal^^
|
|
|