Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

2 Probs ( Namen des PCs, bestimmte zeichen auslesen)

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
DarkLord



Anmeldungsdatum: 26.03.2005
Beiträge: 70
Wohnort: Rhade^^ oben bei muddi

BeitragVerfasst am: 03.04.2005, 14:59    Titel: 2 Probs ( Namen des PCs, bestimmte zeichen auslesen) Antworten mit Zitat

Hi,

ich habe wieder zwei kleine Probleme…

1. )

Gibt es eine Möglichkeit den PC-Namen durch QBasic zu ändern?



2.)

Ich will aus einer Datei eine Zeile auslesen… aus der aber nur die letzten 11-15 Zeichen. Es ist eine String Variable (also Zeichen *g*).
Ich weiß zwar wie man die Zeile in den Speicher bzw. in eine Variable lädt aber wie bekomm ich davon nur die letzten 11-15 Zeichen? Diese sind aber auch die letzten Zeichen in der Variablen bzw. in der Datei. weinen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 03.04.2005, 15:04    Titel: Antworten mit Zitat

Die letzten 15 Zeichen eines Strings bekommst du mit
Code:

NeuerString$ = RIGHT$(UrspruenglicherString, 15)


Ein Programm, das nur die letzten 10 Zeichen der Zeilen in einer Datei ausgibt, sähe
so aus:
Code:

channel = FREEFILE

OPEN "C:\TEST.TXT" FOR INPUT AS #channel

DO UNTIL EOF(channel)
 
 LINE INPUT #channel, Zeile$
 PRINT "Die letzten 10 Zeichen: "; RIGHT$(Zeile$, 10)

LOOP

CLOSE #channel


jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DarkLord



Anmeldungsdatum: 26.03.2005
Beiträge: 70
Wohnort: Rhade^^ oben bei muddi

BeitragVerfasst am: 03.04.2005, 15:10    Titel: Antworten mit Zitat

danke... jetzt kann ich weiter schreiben^^

fehlt nur noch ne antwort zu 1......aber bei euch habe ich da (eigentlich ) keine bedenken
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 03.04.2005, 15:38    Titel: Zu 1) Antworten mit Zitat

Wahrschneilich wenn du NT oder XP hast, kannst du das über "net" oder "net name" irgendwie machen.
Starte einfach "cmd.exe" und Probiere etwas aus in dem du einfach den Befehl "Net" eingiebst.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DarkLord



Anmeldungsdatum: 26.03.2005
Beiträge: 70
Wohnort: Rhade^^ oben bei muddi

BeitragVerfasst am: 03.04.2005, 16:06    Titel: Antworten mit Zitat

also den befehl net computer, schätze mal mit dem, allerdings weiß ich nicht genau wie man DEN einsetzen soll^^
Ich habe XP falls du das noch wissen willst *g*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 03.04.2005, 16:10    Titel: Antworten mit Zitat

DarkLord hat Folgendes geschrieben:

allerdings weiß ich nicht genau wie man DEN einsetzen soll

Einfach "net computer" eingeben und die Syntax anschauen.

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DarkLord



Anmeldungsdatum: 26.03.2005
Beiträge: 70
Wohnort: Rhade^^ oben bei muddi

BeitragVerfasst am: 03.04.2005, 16:16    Titel: Antworten mit Zitat

Habe ich... ging aber erst nicht was ich eingegeben habe^^ ist der befehl aber nicht.. denn jetzt (nachdem ich es richtig habe) steht da: Dieser Befehl kann nur auf Windows-Domänencontrollern ausgeführt werden.
Schade... ich such später einfach mal weiter.. danke trotzdem
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 03.04.2005, 17:41    Titel: Antworten mit Zitat

Normalerweise liefert einem
Code:
net config workstation

die aktuellen NetBIOS-Einstellungen wie PC-Name, Arbeitsgruppe/Domäne sowie gerade eingeloggter Windows-Benutzer, und dies funktioniert von WfW 3.11 bis XP durchgehend überall mit jeder Windows-Version. :-)

Zum Setzen des Rechnernamens (gedenkst Du einen Unattended Setup aufzubauen?) sind aus meiner Sicht zwei Ansätze denkbar:
1.) Mittels VBScript und SendKeys() Tasteneingaben an den vorher mit SHELL gestarteten "Systemsteuerung"/"System"-Prozess senden
2.) Direkt mit REGEDIT die zugehörigen Schlüssel modifizieren.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 03.04.2005, 18:00    Titel: Antworten mit Zitat

Kurz nochmal zu dem Datei-Lesen-Problem: die angebotene Lösung funktioniert zwar, eleganter weil schneller is aber so was:

Code:

chanel = FREEFILE
OPEN dateiname$ FOR BINARY AS #chanel

l = LOF(chanel)
adr = l - 15
lese$ = SPACE$(15)

GET #chanel, adr, lese$

CLOSE #chanel



Und wozu musst du den Computernamen ändern?
Wenns nur ne Temporäre Änderung sein darf, empfehle ich dir, einfach die Umgebungsvariablen zu ändern:

Code:

SHELL "SET USERNAME=" + NeuerName$


Muss aber bei jedem Neustart neu gemacht werden, die Umgebungsvariablen werden bei jedem Reset neu initiiert.
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 03.04.2005, 20:02    Titel: Antworten mit Zitat

@Dusky_Joe: Deine Lösung funktioniert aber nur beim Lesen der ersten Zeile.

EDIT: Muss da nicht vor
Code:

lese$ = SPACE$(15)

auch noch
Code:

DIM lese AS STRING * 15

stehen?
Wobei dann das $ nach lese wegfallen würde.

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DarkLord



Anmeldungsdatum: 26.03.2005
Beiträge: 70
Wohnort: Rhade^^ oben bei muddi

BeitragVerfasst am: 03.04.2005, 21:02    Titel: Antworten mit Zitat

@ dreael
Also, ich will das man eine Nachricht verschciken kann (über net send), und da ich weiß das der Absender der PC Name ist, wollte ich den so vorher speichern, dann ändern, dann nachricht senden, und dann wieder zurück ändern^^.
Du sagts mit Regedit? Welcher schlüssel ist das... ich habe meinen PC-Namen gesucht (ist der verschlüsselt?) aber nix gefunden. Du weißt nicht zufällig wie der heißt?
Mit VBS kenn ich mich leider nicht aus... sonst wäre das sicher ne gute idee *g*. Lerne aber gerne, falls du seiten mit kleinen tuts für vbs kennst.


@ all
Aber ich habe das was jb mir gesagt hat ausprobiert, und es klappt (die letzten 15 Zeichen eines Strings bekommst du mit...).
Aber jetzt habe ich ein anderes problem.. (habe zwar ein anderes gelöst aber dadurch ist folgendes entstanden):

Ich will das in einer Datei alles geordnet aufgelistet ist, so, der benutzer kann da eigne dinge reinschreiben, den namen z.b.
Es soll allerdings alles folgendermaßen in der Datei gespeichert werden:

NAME: der name, max 10 zeichen ; IP: Dann hier die IP

so, allerdings soll alles auch den richtigen abstand haben also:

NAME: 1234567890 ; IP: 192.168.100.100

So in der art soll das in der Datei gespeicher werden. Allerdings soll, wenn der Name kürzer als 10 Zeichen sit trotzdem an einem bestimmten punkt anfangen mit IP. Ich wollte das mit locate lösen, allerdings habe ich gemerkt dass das in einer Datei nicht geht (oder ich habe es falsch gemacht). Wie kann man das also machen das in splte 19
" ; IP: 192.168.100.100" steht?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 04.04.2005, 15:38    Titel: Antworten mit Zitat

Versuch mal das:

Code:

OPEN "C:\TEST.TXT" FOR OUTPUT AS #1

REM Die Eingaben:
 LINE INPUT "Name --> "; Name$
 LINE INPUT "IP --> "; IP$

REM Anführende und abschließende Leerzeichen werden entfernt:
 Name$ = RTRIM$(LTRIM$(Name$)
 IP$ = RTRIM$(LTRIM$(IP$))

REM Wenn der Name länger als 10 Buchstaben ist, werden die restlichen Buchstaben
REM abgeschnitten:
 IF LEN(Name$) > 10 THEN Name$ = LEFT$(Name$, 10)
REM Das selbe für die IP, allerdings mit Maximallänge = 15:
 IF LEN(IP$) > 15 THEN IP$ = LEFT$(IP$, 15)

REM Wenn der Name/die IP kürzer als 10/15 ist, werden Leerzeichen angefügt:
 IF LEN(Name$) < 10 THEN Name$ = Name$ + STRING$(10 - LEN(Name$), " ")
 IF LEN(IP$) < 15 THEN IP$ = IP$ + STRING$(15 - LEN(IP$), " ")
 
REM Jetzt wird's in die Datei geschrieben.
 PRINT #1, "NAME: "; Name$; "; IP: "; IP$ 

CLOSE #1


Da kommen jetzt sehr viele Stringmanipulationen zum Einsatz, die die QuickBASIC Onlinehilfe
aber sehr gut erklärt.
Wenn dennoch was nicht klar ist, einfach fragen!

EDIT: Hab aber soooo viel Zeit, also:

Code:

LEN()

ermittelt die Länge eines Strings.
Bsp:
Code:

LINE INPUT Name$
PRINT "Der Name hat "; LEN(Name$); " Zeichen!"


Wie man bei dem Beispiel sehen kann, haben Zahlen aller dings immer ein
führendes Leerzeichen, das für negative Zahlen gedacht ist, da ja dann ein
Minus davor stehen muss.
Da gibt es eine nette kleine Funktion:
Code:

LTRIM$()

Diese Funktion schneidet alle führenden Leerzeichen ab.
Code:

RTRIM$()

hingegen schneidet - wer hätte das gedacht - die abschließenden Leerstellen ab.
Bsp:
Code:

LINE INPUT "Geben sie einen Namen mit führenden und abschließenden Leerzeichen ein --> "; Name$
PRINT "Der Name ohne führende und abschließende Leerzeichen: "; RTRIM$(LTRIM$(Name$))


Wie ich zuvor bereits sagte, kann man die rechten Zeichen eines Strings seperat darstellen, und zwar mit
Code:

RIGHT$(String, n)

Dabei ist n die Position im Wort, ab dem es nach rechts dargestellt werden soll.
Das Gegenstück dazu ist
Code:

LEFT$(String, n)

Nur ist da alles nach links bezogen.

Dann gibt es noch die Funktion
Code:

STRING$(n, z)

Diese Funktion dient dazu, das Zeichen z n-mal zurückzuliefern.
Bsp:
Code:

PRINT "20mal das Zeichen *"
PRINT STRING$(20, "*")

Alternativ kann man anstatt z auch den ASCII-Code des Zeichens z abgeben.


OK, Kurs zu Ende. zwinkern

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DarkLord



Anmeldungsdatum: 26.03.2005
Beiträge: 70
Wohnort: Rhade^^ oben bei muddi

BeitragVerfasst am: 04.04.2005, 17:09    Titel: Antworten mit Zitat

EDIT:

Danke, ich habe es mir gerade angeguckt. (habe aber ein fehler gefunden *g* ein ) fehlte^^) Und ich muss sagen das es richtig gut ist.. ich werde das warscheinlich so übernehmen

EDIT 2:

Funktionier alles bestens. Habe noch ein bissle geändert. Danke (puh wie oft habe ich hier schon danke gesagt *g*()



danke^^

ich guck mir das nachher an, da ich gleich wieder weg muss^^
Und ich frage nach wenn ich was nicht versteh, darauf kannste dich verlassen (will ja was lernen), aber ich guck erst in die MonFAQ falls es da nicht steht^^

_____________________

Danke für diese tolle Community, selten erlebt


Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz