Variablen Problem

Du hast eine Frage aber bist neu im Thema?
Antworten
ioiCracr

Variablen Problem

Beitrag von ioiCracr »

Hallo erst mal @ all!!!
Erst mal ein lob für das wirklich gut designete Forum!!! :wink:

So jetzt zum eigentlich Problem:
Es geht um eine .ini die ausgeführt werden soll, in der IPs bentzt werden.Da aber eine konstant vorgegebene IP im Quellcode zu IP-Konflikten im Netzwerk führt, muß die IP für jeden Rechner neu generiert werden.
IDEE:
Man deklariert eine Variable, in diese schreibt man die Systemzeit, nutzt davon die letzten zwei Stellen als den letzten Block in der IP und alles funktioniert wieder... :lol:

Ich bekomme es aber einfach nicht hin die Uhrzeit, geschweige denn einen anderen Wert(54; 66; 01 ; oder andere) in die Var zu schreiben.

Ich habe es so probiert:
set /a Variable=87

den Befehl fürht DOS problemlos aus, nur ich weiß icht wie ich den Wert wieder ausgeben kann um zu testen ob das geklappt hat.
Mit der Systemzeit hab ich auch ein Problem, da man mit dem Befehl 'time' die Uhrzeit anzeigen und ändern kann kann man nicht einfach time=Varibale setzen.
Man braucht einen Trick um die reine Uhrzeit hineinzuschreiben...

Wäre echt super wenn ihr mir helfen könntet.
Ach und zur Info, bin wirklich totaler Anfänger, d.h. kann keine TurboPascal o.ä. :D
Benutzeravatar
CptKlotz
Admin a.D.
Beiträge: 2947
Registriert: Mo 7. Mär 2005, 23:36
Wohnort: Dorsten
Kontaktdaten:

Beitrag von CptKlotz »

Hallo und Willkommen im Forum.

Vielen Dank für das Lob :-)

Zur Sache:

Eine .ini-Datei ist unter DOS nicht ausführbar, meinst Du eine Batchdatei? (.bat)?

Birgt Deine Zufallsgenerierung nicht auch zumindest noch das Potential eines Konfliktes, weil zufällig zwei gleiche IPs vergeben werden könnten? Wenn ja, wäre das nur eine Milderung, keine Lösung des Problems.

Die letzten beiden Stellen der Uhrzeit könnten (zumindest im Format Stunden:Minuten:Sekunden) den Wert 0...59 annehmen. Das paßt nicht sonderlich gut auf 255 mögliche Werte bei einer IP-Adresse wie 192.168.0.xxx.

Wofür ist der /a-Parameter des SET-Befehls gut und von welcher DOS-Version gehst Du dabei überhaupt aus? Bei meinem DOS 6.22 ist kein /a Parameter dokumentiert. Die Eingabe von

Code: Alles auswählen

SET /A VARIABLE=TEST 
führt dazu, daß die Umgebungsvariable mit dem Namen "/A VARIABLE" gesetzt wird und den Wert "TEST" erhält. /A wird also nicht als Parameter erkannt sondern als Teil des Variablennamens.

Mir ist insgesamt nicht ganz klar, was genau Du überhaupt erreichen willst, geschweige denn, ob das mit Batch-Programmierung (falls Du die meinst!) überhaupt möglich ist und ob es nicht bessere Lösungen für das Problem gibt.
Kannst Du da etwas konkreter werden?

Auf die Gefahr hin, mich wieder unbeliebt zu machen:

Leute, überlegt Euch VORHER, was ihr genau erreichen wollt und schreibt dann deutliche und verständliche Postings. Ihr müßt dabei bedenken, daß Eure Mit-Forenuser, egal wie erfahren diese sind, nicht erraten können, was Ihr eigentlich wollt. Es kann auch hilfreich sein, erstmal das Endziel der Bemühungen zu erläutern, bevor man eine Methode wie "ini-Dateien" oder "Batch-Programmierung" voraussetzt - insbesondere, wenn man absoluter Anfänger ist. Die erfahreneren Teilnehmer können dann immer noch überlegen, was die beste Methode ist.

Gruß,
Stephan
“It is impossible to defeat an ignorant man in argument.” (William G. McAdoo)
ioiCracr

Beitrag von ioiCracr »

Erst mal vielen Dank!
Ich nutze das DOS 6.2.
Das mit dem Namen hab ich mir notiert, aber ich weiß immer noch nciht, wie ich den Wert der Var abrufen kann...


Zum Verstädnis:
Also mit dem DrumHerum weiß ich selber nicht so genau bescheid, weil ich das für mein Praktikum machen muß und die da ziemlich kompliziert arbeiten.
Ich muß einfach nur die sekunden der Systemzeit in die Variable bekommen. Und die dann wieder abrufen können. Dann bin cih schon einen großen Schritt vorwärts gekommen...
Ach wegen der IP weil die 255 Möglichkeiten hat, die Sek aber nur 59(bzw 60)... Das ist kein Thema, die 60 reichen vollkommen aus...
Benutzeravatar
Jinsu
MemMaker-Benutzer
Beiträge: 79
Registriert: Di 8. Mär 2005, 11:14
Wohnort: NRW
Kontaktdaten:

Beitrag von Jinsu »

Hm, ich weiss nicht, ob das mit den herkömmlichen DOS-Befehle ausreichen, wahrscheinlich ist es schon sinnvoller, vielleicht ein Programm zu schreiben, da gibt es genug Möglichkeiten, um an die Systemzeit zu kommen.

Da ist vielleicht sogar der Vorteil mit drin, dass intern ein Tag von 24 Stunden in der ganzen Zahl 1 repräsentiert wird und jede Tageszeit entsprechend ein Bruchteil dieses Wertes sind.

Ich weiss nicht ob das in Turb C so realisiert ist, aber ich seh mir das mal an.
In Pascal ging das zumindest.
Benutzeravatar
ChrisR3tro
Administrator
Beiträge: 1981
Registriert: Mo 7. Mär 2005, 23:33
Wohnort: NRW
Kontaktdaten:

Beitrag von ChrisR3tro »

Also wenn man es in einer richtigen Programmiersprache programmiert, kann man auch gleich Zufallszahlen generieren oder sich einen Algorithmus ausdenken, der IP-Adressen vernünftig verteilt. ;-)

Gruß,
locutus
Benutzeravatar
Jinsu
MemMaker-Benutzer
Beiträge: 79
Registriert: Di 8. Mär 2005, 11:14
Wohnort: NRW
Kontaktdaten:

Beitrag von Jinsu »

Hehe, klar, ist nur zu einfach!

;-)
Benutzeravatar
CptKlotz
Admin a.D.
Beiträge: 2947
Registriert: Mo 7. Mär 2005, 23:36
Wohnort: Dorsten
Kontaktdaten:

Beitrag von CptKlotz »

Benutzen nicht in der Tat einige Programmiersprachen die Uhr, um Zufallszahlen zu erzeugen?

Bei QBASIC muß man immer die Zeile RANDOMIZE (TIMER) einfügen, bevor man die RND-Funktion benutzt, wenn man nicht bei jedem Programmlauf dieselbe Zufallszahl bekommen möchte.
“It is impossible to defeat an ignorant man in argument.” (William G. McAdoo)
ioiCracr

Beitrag von ioiCracr »

Also wenn man das mit einem Prog realisieren will, muß das dann natürlich auch mit DOS kompatibel sein(was Vermutlich auch der Fall sein wird bei euren Vorschlägen) aber das mit dem Befehl wäre halt am einfachsten... :?
Benutzeravatar
ChrisR3tro
Administrator
Beiträge: 1981
Registriert: Mo 7. Mär 2005, 23:33
Wohnort: NRW
Kontaktdaten:

Beitrag von ChrisR3tro »

Ja, stimmt. Die Compiler benutzen tatsächlich die Systemzeit, um Zufallszahlen zu generieren, aber ich meine da kommen auch noch andere Sachen wie z.B. Interrupts und hardwarespezifische Sachen zu. Das hat zumindest mal unser Informatiklehrer erzählt.

Gruß,
locutus
ioiCracr

Beitrag von ioiCracr »

Moin moin!
Also zur aktuellen Situation.
Ich habe es auf die Reihe bekommen einen Wert in einen beliebige Variable zu bekommen.
Jetzt zur nächsten Stufe:
Wie bekomme ich die Systemzeit verarbeitet :?:
Ich meine es muß ja nicht unbedingt die Uhrzeit sein, ich brauch halt irgend einen zahlenwert der kontinuierlich weiterläuft und den ich verarbeiten kann... :D

Könnte ich da evtl das Pipe-Zeichen( | ) verwenden? Hab gelesen das dient zur verkettung von Befehlen. also die ausgabe des einen befehls würde dann die eingabe des anderen sein...
Antworten