ERLEDIGT
NEIN
NEIN
ANTWORTEN
12
12
ZUGRIFFE
1711
1711
EMPFEHLEN
-
22.10.03 22:49 #1
- Registriert seit
- Oct 2003
- Ort
- Lüneburg
- Beiträge
- 36
Hallo ich versuche seit einigen Tagen mit Visual Basic 6 ein Programm zu erstellen womit man in einem Spiel bequem die Auflösung ändern kann.
Und zwar liegt das Problem dabei dass ich möchte das ein Bestimmter Text in die Datei geschrieben wird dies habe ich bislang mit
Private Sub Option1_Click()
Open "Sun.ini" For Output As #1
Print #1, "[Video]"
Print #1, "ScreenWidth=640"
Print #1, "ScreenHeight=400"
Print #1, "StretchMovies=no"
Close #1
End Sub
versucht, funktioniert hat es jedoch sollte es nich die ganze datei neu erstellen und die anderen inhalte löschen!Könnt ihr mir sagen wie der code dafür lautet dass man den inhalt
[Video]
ScreenWidth=640
ScreenHeight=400
in die Text Datei Hinzufügt jedoch nicht den anderen inhalt löscht oder man den alten inhalt von Video überschreibt?
Were Dankbar Gruss PatrickGeändert von Trancefreak (22.10.03 um 22:54 Uhr)
-
Sieht mir wie eine *.ini Datei aus.
Die kannst du leicht lesen und schreiben mit den API-Funktionen WritePrivateProfileString und GetPrivateProfileString.
Hier im Forum gabs mal ein Beispiel dazu, such einfach mal nach den Funktionen.
-
23.10.03 21:29 #3
- Registriert seit
- Oct 2003
- Ort
- Lüneburg
- Beiträge
- 36
Moin
Ich hatte bis ebend im Forum gesucht und leidernicht fündig geworden kennst du den direkt befehl noch dafür were echt dankbar gruss Patrick
-
24.10.03 06:22 #4
- Registriert seit
- Oct 2003
- Ort
- Lüneburg
- Beiträge
- 36
Moin
Hab jetz doch etwas gefunden
"Deklaration als Modul"
Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
"Und die Funktion"
Private Sub Option1_Click()
WritePrivateProfileString "Video", "ScreenWidth", Str$(MeLeft), App.Path & "\Sun.ini"
WritePrivateProfileString "Video", "ScreenHeight", Str$(Me.Top), App.Path & "\Sun.ini"
End Sub
Er schreibt es wie ich es möchte nur halt wo kann ich da meine Zahlen eingeben ? in der ini Datei tauchen jedoch zahlen auf die ich nirgends eingegeben habe!Kann mir vielleicht einer sagen wie ich in meiner funktion an der stelle meine zahlen eingeben kann?
Also bis lang sieht die fertig ini so aus
[Video]
ScreenWidth= 0
ScreenHeight= 2640
Is alles halt ok nur die zahlen da bräuchte ich nochmals hilfe danke im vorraus
Gruss Patrick
-
Für die Auflösung kann das ja nicht gehen, du schreibst ja nicht die Breite und Höhe in die Datei, sondern die Position der linken oberen Ecke des Fensters.
(Me.Left, Me.Top)
Die Breite und Höhe bekommt man mit .Height und .Width, aber nicht über Me, sonst bekommst die Werte vom Fenster.
Die Auflösung bekommst du so:
Screen betrifft den ganzen Bildschirm und gibt die Höhe/Breite in Twips zurück.Code :1 2
Breite = Screen.Width / Screen.TwipsPerPixelX Höhe = Screen.Height / Screen.TwipsPerPixelY
Screen stellt aber auch die Methoden TwipsPerPixelX/Y bereit, mit denen in Pixel umgerechnet werden kann.
-
24.10.03 09:09 #6
hallo Patrick,
mein Vorschlag wäre, die gesamte Textdatei in ein Array einlesen zu lassen und dann die betreffenden Einträge austauschen.
z.B.
dim arText() as String,Buffer$
dim i as Integer
Redim arText(0)
Open "Sun.ini" For Input As #1
Do While EOF(1)
line input #1,Buffer
arText(i)=Buffer
i = i+1
ReDim Preserve arText(i)
loop
Close #1
Nun den Text austauschen
entweder direkt....
arText(1) = "ScreenWidth=" & 640
arText(2) = "ScreenHeight=" & 400
arText(3) = "StretchMovies=no"
oder durch eine Schleife das Array abfragen
for i= 0 to UBound(arText)-1
if instr(1,arText(i),"ScreenWidth") >0 then
arText(i) = "ScreenWidth=" & 640
elseif instr(1,arText(i),"ScreenHeight") >0 then
arText(i) = "ScreenHeight=" & 400
elseif instr(1,arText(i),"StretchMovies") >0 then
arText(i) = "StretchMovies=no"
endif
next i
Nun wieder in Datei schreiben
Open "Sun.ini" For Output As #1
for i= 0 to UBound(arText)-1
Print arText(i)
next i
Close #1
Redim arText(0)
So würde ich dieses Problem lösen.
Du kannst aber auch das Prinzip mit dem Schreiben einer INI-Datei per API-Befehle verwenden.
Da ist aber die Anzahl der Zeilen begrenzt, die Du schreiben könntest.
Probier es mal aus.
ANI
-
@ANI ja, wiso einfach wenns auch kompliziert geht
Sein Problem war ja nicht mehr das Schreiben in die Datei, sondern der richtige Wert.
Die Fett-Markierten Stellen kennzeichnen die Position an der die Werte für die Auflösung stehen sollen.Code :1 2 3 4 5 6 7 8 9
[i]Original geschrieben von Patrick[/i] "Deklaration als Modul" Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, [b]ByVal lpString As Any[/b], ByVal lpFileName As String) As Long "Und die Funktion" Private Sub Option1_Click() WritePrivateProfileString "Video", "ScreenWidth", [b]Str$(MeLeft)[/b], App.Path & "\Sun.ini" WritePrivateProfileString "Video", "ScreenHeight", [b]Str$(Me.Top)[/b], App.Path & "\Sun.ini" End Sub
Also Me.Left/Top ersetzen durch eigene Werte als Zahl oder über das Screen-Objekt für die aktuelle Auflösung aus meinem letzten Beitrag oben.
-
24.10.03 10:30 #8
Hallo Retlaw,
ich weis, daß es nicht mehr um das Schreiben einer Text-Datei ging, sondern um die Auflösung ermitteln.
Dieses Problem hast Du bestens gelöst.
Ich wollte nur mit meinem Beitrag auf das Problem hinweisen, wenn es eine große INI-Datei werden sollte, reagiert der API-Befehl nicht mehr und verweigert die Ausführung.
Aber dennoch Danke für den Hinweis.
ANI
-
@ANI achso.

Weißt du wo da die Grenze für die API-Funktion ist und wie sich das im Programm bemerkbar macht ? (Laufzeitfehler, ...)
-
24.10.03 10:51 #10
Hallo Retlaw,
die genaue Grenze kenne ich noch nicht.
Mir ist es nur aufgefallen, weil ich eine Art Datenbank mit einer INI-Datei machen wolte und nach ca. 200 Zeilen (genau weis ich es nicht mehr) hat der Write-Befehl keine Zeilen mehr geschrieben. (ohne Laufzeitfehler) Er schreibt einfach nicht mehr!
Bin dann sofort auf ein binäres System umgestiegen und dies ging dann bis unbegrenzt. Ich habe mich dann nicht weiter mit dem INI-Problem herumgeschlagen.
Wenn Du es aber genauer wissen möchtest, werde ich ein kleines Testprogramm schreiben, um die genaue Zeilenanzahl bestimmen zu können.
ANI
-
24.10.03 11:31 #11
Hallo Retlaw,
habe die INI-Datei getestet und bin auf die Begrenzung von 64313 Zeichen (64 K)gestoßen.
Ich hoffe, das reicht als Anwort.
Tschüß
ANI
-
Ja danke
-
25.10.03 02:56 #13
- Registriert seit
- Oct 2003
- Ort
- Lüneburg
- Beiträge
- 36
Jau danke das hat mir geholfen für die schnelle antwort
Ähnliche Themen
-
Text aus Textbox fürs schreiben in eine Datei vorbereiten
Von Templorials im Forum PHPAntworten: 3Letzter Beitrag: 13.04.08, 13:38 -
Bestimmten Text aus Datei auslesen und in eine andere Schreiben
Von wissensdurstxxl im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 08.08.07, 10:03 -
Problem: per PHP in eine text datei schreiben.
Von deinpapa im Forum PHPAntworten: 1Letzter Beitrag: 22.12.06, 16:56 -
[C++] Daten aus einer EditBox in eine Text Datei schreiben
Von HansJ im Forum C/C++Antworten: 6Letzter Beitrag: 27.10.05, 17:05 -
Text aus einer .dcm Datei per Makro in eine Excel-Tabelle schreiben
Von ChrisStangl im Forum Office-AnwendungenAntworten: 0Letzter Beitrag: 30.08.04, 15:26





Zitieren
Login





