Zeilen neu schreiben / auslesen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

brandy

Betreff: Zeilen neu schreiben / auslesen

BeitragSa, März 01, 2008 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe ein kleines Problem mit dem Auslesen von Zeilen. Ich möchte ein Programm schreiben, das ermöglicht, "komfortabel" in eine bestimmte ini-Datei in einem Spiel (SWAT4) zu schreiben, da ein paar Clanmitglieder das nicht auf die reihe kriegen.
Ich habe im Prinzip schon den Hauptteil, nur irgendwie erkennt er die entpsrechende Zeile nicht. Das ist schwer zu erklären, deswegen poste ich mal die entsprechenden Zeilen:

Code: [AUSKLAPPEN]


GesuchteTaste$ = Key$+"="

While Eof(Ini$) = 0   
   
   Line$ = ReadLine(Ini$)

   Initialien$ = Mid(Line$, 1, 2)
   
   Print "Gesamte Zeile: "+Line$
   Print "Die gesuchte Taste: "+Key$
   Print "Daraus folgen die ersten zwei Buchstaben der Zeile: "+GesuchteTaste$
   Print "Die zwei ersten Buchstaben der Zeile: "+Initialien$   
   Print ""
   Print ""
   Print ""
   
   If GesuchteTaste$ = Initialen$ Then

      Print "Treffer!"
      Print ""
      Print ""
           WaitKey

           End
   
   EndIf
   
Wend

CloseFile Ini$



Ich hab schon rumprobiert, nur ich weiß nicht, wieso er den String nicht erkennt. An sich klappt es ja, er zeigt ja alles schön an, nur leider wird scheinbar nicht erkannt, dass die Strings übereinstimmen.
Ein kleiner denkanstoss, wo der fehler liegt würe mir reichen.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, März 01, 2008 21:30
Antworten mit Zitat
Benutzer-Profile anzeigen
wäre gut wenn du uns mal einen Auszug aus der Datei hier postest um das Problem genauer unter die Lupe zu nehmen.

einen Fehler hab ich schon gefunden
wenn du eine Datei öffnest wird die ein Integerwert zurückgeliefert den man nicht in einer Stringvariablen speichern sollte sondern in einer Integervar.
ini%= openfile("Datei.ini")
[BB2D | BB3D | BB+]
 

brandy

BeitragSa, März 08, 2008 16:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Der entsprechende Dateiabschnitt um den es geht ist dieser hier:

Code: [AUSKLAPPEN]

[Engine.Input]
.
.
.
.
.
LeftMouse=Fire
RightMouse=OpenGraphicCommandInterface | RightMouseAlias
MiddleMouse=IssueComplianceOrInteract
Tab=CommandInterfaceNextGroup
Enter=
Shift=ToggleRunning 0
Ctrl=HoldCommandForZulu
Alt=
Pause=GUICloseMenu
CapsLock=ControlViewportAlias
Escape=GUICloseMenu
Space=GiveDefaultCommand
PageDown=
End=HideViewport
Left=
Up=ScrollChatUp
Right=
Down=ScrollChatDown
Insert=ShowViewport Red
Delete=CycleOfficer
1=CommandOrEquip Row_NumberKeys 1
2=CommandOrEquip Row_NumberKeys 2
3=CommandOrEquip Row_NumberKeys 3
4=CommandOrEquip Row_NumberKeys 4
5=CommandOrEquip Row_NumberKeys 5
6=CommandOrEquip Row_NumberKeys 6
7=CommandOrEquip Row_NumberKeys 7
8=CommandOrEquip Row_NumberKeys 8
9=CommandOrEquip Row_NumberKeys 9
0=CommandOrEquip Row_NumberKeys 10
C=Duck
Q=LeanLeft
E=LeanRight
G=VoiceTalk
H=EquipSlot 11
L=EquipSlot 14
M=ShowInGamePopup
O=ShowInGamePopup
P=
S=MoveBackward
T=OpenHudChat 1
X=NextFireMode
Y=ToggleZoom
F1=CommandOrEquip Row_FunctionKeys 1
F2=CommandOrEquip Row_FunctionKeys 2
F3=CommandOrEquip Row_FunctionKeys 3
F4=CommandOrEquip Row_FunctionKeys 4
F5=CommandOrEquip Row_FunctionKeys 5
F6=CommandOrEquip Row_FunctionKeys 6
F7=CommandOrEquip Row_FunctionKeys 7
F8=CommandOrEquip Row_FunctionKeys 8
F9=CommandOrEquip Row_FunctionKeys 9
F10=CommandOrEquip Row_FunctionKeys 10
F11=ServerVoteYes
F12=ServerVoteNo
Equals=EqualsPlus
Comma=StrafeLeft
Minus=Dash
Period=StrafeRight
Slash=NextWeapon
LeftBracket=InventoryPrevious
Backslash=ChangeHud
RightBracket=InventoryNext
MouseX=Count bXAxis | Axis aMouseX Speed=6.0
MouseY=Count bYAxis | Axis aMouseY Speed=6.0
MouseW=
None=
Cancel=
Backspace=PlayerCommandInterfaceBack
PageUp=ShowViewport Sniper
home=ShowViewport Blue
Select=
Print=
Execute=
PrintScrn=
Help=
A=StrafeLeft
B=Melee
N=ShowInGamePopup
D=StrafeRight
F=IssueComplianceOrInteract
i=
j=
K=
R=Reload
U=
V=ToggleFlashlight
W=MoveForward
Z=OpenHudChat 0
NumPad0=HideViewport
NumPad1=ShowViewport Red
NumPad2=ShowViewport Blue
NumPad3=ShowViewport Sniper
NumPad4=
NumPad5=
NumPad6=
NumPad7=
NumPad8=
NumPad9=
GreyStar=
Separator=
NumPadPeriod=Duck
GreySlash=shot
F13=
F14=
F15=
F16=
F17=
F18=
F19=
F20=
F21=
F22=
F23=
F24=
NumLock=
ScrollLock=
LShift=
RShift=
LControl=
RControl=
Semicolon=
Tilde=
SingleQuote=Strafe
Attn=
CrSel=
ExSel=
ErEof=
Play=
Zoom=
NoName=
PA1=
OemClear=
MouseZ=
MouseWheelDown=ScrollCommand Down
MouseWheelUp=ScrollCommand Up
Joy1=
Joy2=
Joy3=
Joy4=
Joy5=
Joy6=
Joy7=
Joy8=
Joy9=
Joy10=
Joy11=
Joy12=
Joy13=
Joy14=
Joy15=
Joy16=
JoyX=
JoyY=
JoyZ=
JoyR=
JoyU=
JoyV=
JoySlider1=
JoySlider2=

[SwatGui.SwatInputReset]
LeftMouse=Fire
RightMouse=OpenGraphicCommandInterface | RightMouseAlias
MiddleMouse=IssueComplianceOrInteract
Tab=CommandInterfaceNextGroup
Enter=
Shift=ToggleRunning 0
Ctrl=HoldCommandForZulu
Alt=
Pause=GUICloseMenu
CapsLock=ControlViewportAlias
Escape=GUICloseMenu
Space=GiveDefaultCommand
PageDown=
End=HideViewport
Left=
Up=ScrollChatUp
Right=
Down=ScrollChatDown
Insert=ShowViewport Red
Delete=CycleOfficer
Key1=CommandOrEquip Row_NumberKeys 1
Key2=CommandOrEquip Row_NumberKeys 2
Key3=CommandOrEquip Row_NumberKeys 3
Key4=CommandOrEquip Row_NumberKeys 4
Key5=CommandOrEquip Row_NumberKeys 5
Key6=CommandOrEquip Row_NumberKeys 6
Key7=CommandOrEquip Row_NumberKeys 7
Key8=CommandOrEquip Row_NumberKeys 8
Key9=CommandOrEquip Row_NumberKeys 9
Key0=CommandOrEquip Row_NumberKeys 10
C=Duck
Q=LeanLeft
E=LeanRight
G=VoiceTalk
H=EquipSlot 11
L=EquipSlot 14
M=ShowInGamePopup
O=ShowInGamePopup
P=
S=MoveBackward
T=OpenHudChat 1
X=NextFireMode
Y=ToggleZoom
F1=CommandOrEquip Row_FunctionKeys 1
F2=CommandOrEquip Row_FunctionKeys 2
F3=CommandOrEquip Row_FunctionKeys 3
F4=CommandOrEquip Row_FunctionKeys 4
F5=CommandOrEquip Row_FunctionKeys 5
F6=CommandOrEquip Row_FunctionKeys 6
F7=CommandOrEquip Row_FunctionKeys 7
F8=CommandOrEquip Row_FunctionKeys 8
F9=CommandOrEquip Row_FunctionKeys 9
F10=CommandOrEquip Row_FunctionKeys 10
F11=ServerVoteYes
F12=ServerVoteNo
Equals=EqualsPlus
Comma=StrafeLeft
Minus=Dash
Period=StrafeRight
Slash=NextWeapon
LeftBracket=InventoryPrevious
Backslash=ChangeHud
RightBracket=InventoryNext
MouseX=Count bXAxis | Axis aMouseX Speed=6.0
MouseY=Count bYAxis | Axis aMouseY Speed=6.0
MouseW=
None=
Cancel=
Backspace=PlayerCommandInterfaceBack
PageUp=ShowViewport Sniper
home=ShowViewport Blue
Select=
Print=
Execute=
PrintScrn=
Help=
A=StrafeLeft
B=Melee
N=ShowInGamePopup
D=StrafeRight
F=IssueComplianceOrInteract
i=
j=
K=
R=Reload
U=
V=ToggleFlashlight
W=MoveForward
Z=OpenHudChat 0
NumPad0=HideViewport
NumPad1=ShowViewport Red
NumPad2=ShowViewport Blue
NumPad3=ShowViewport Sniper
NumPad4=
NumPad5=
NumPad6=
NumPad7=
NumPad8=
NumPad9=
GreyStar=
Separator=
NumPadPeriod=Duck
GreySlash=shot
F13=
F14=
F15=
F16=
F17=
F18=
F19=
F20=
F21=
F22=
F23=
F24=
NumLock=
ScrollLock=
LShift=
RShift=
LControl=
RControl=
Semicolon=
Tilde=
SingleQuote=Strafe
Attn=
CrSel=
ExSel=
ErEof=
Play=
Zoom=
NoName=
PA1=
OemClear=
MouseZ=
MouseWheelDown=ScrollCommand Down
MouseWheelUp=ScrollCommand Up
Joy1=
Joy2=
Joy3=
Joy4=
Joy5=
Joy6=
Joy7=
Joy8=
Joy9=
Joy10=
Joy11=
Joy12=
Joy13=
Joy14=
Joy15=
Joy16=
JoyX=
JoyY=
JoyZ=
JoyR=
JoyU=
JoyV=
JoySlider1=
JoySlider2=



Es ist der Engine.Input abschnitt einer User.ini der Unreal-Engine 2, falls das jemandem was hilft.
Der sieht eigentlich immer gleich aus, so z.b. bei America's Army.

Das mit dem Integer bei openfile ist gut zu wissen.

Wenn ich nun z.b. K eingebe, dann gibt er wie gesagt zwar die entsprechende information richtig aus, jedoch bleibt das erhoffte "Treffer" aus.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, März 08, 2008 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hatte gerade Zeit für was einfaches!
Code: [AUSKLAPPEN]
Type Zeilen Field Zeile$ End Type ; zum zwischenspeichern der Datei
key$="K"; suche nach...
;Datei einlesen
INI%= ReadFile("datei.ini")
If ini = 0 Then RuntimeError("Datei nicht gefunden")
   
While Not Eof(INI)
    z.Zeilen = New Zeilen
    z\zeile  = ReadLine (INI)
Wend
CloseFile INI%


For z.Zeilen =Each Zeilen
    If AktivZumLesen=1 Then;erst wenn die Zeile "[Engine.Input]" gefunden wurde ist das aktiv und die Suche geht los
       ; Schleife verlassen da alle relevanten abgearbeitet
       If Instr(z\zeile,"[") Then Exit ; dieses wird erst ausgefüht wenn alle Daten von "[Engine.Input]" ausgeführt sind
     
        PositionGleich% = Instr (z\zeile,"="); das = Zeiechen suchen
        If PositionGleich% > 0 Then ;also nur wenn das = zeichen gefunden wurde
            GefundeneTaste$ = Left (z\zeile,PositionGleich-1) ;Tste rauskopieren aber ohne =
            WertDerTaste$ = Mid (z\zeile,PositionGleich+1);alles nach dem = Zeichen
            Print GefundeneTaste$
            Print "  Wert: " + WertDerTaste$
            ;....
            If Key$ = GefundeneTaste$ Then ;wichtig ist die Goss/Klein schreibung
                ;....Hier jetzt die Zeile abändern wie gewollt
                z\zeile = GefundeneTaste$ + "=" + "; Was_immer_da_dann_Stehen_soll"
                ;....
                ;....
            End If
        EndIf
    End If
    If AktivZumLesen=0 Then ;Zum lesen freischalten nach [Engine.Input]
        If Instr(z\zeile,"[Engine.Input]") Then AktivZumLesen=1
    End If
Next

;Datei speichern
INI%= WriteFile("ini.bb")

For z.Zeilen = Each Zeilen
    WriteLine (INI,z\zeile)
    Delete z ; den Eintrag aus der Liste löschen
Next
CloseFile INI%
[BB2D | BB3D | BB+]

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group