Seite 1 von 2
20 Texte in eine Datei? In 20 Dateien? Oder Datenbank?
Verfasst: 18.03.2005 21:34
von Poser
Hallo,
es geht um die Verwaltung von 20 verschiedenen Texten,
die der User nach belieben abändern kann.
Natürlich könnte man einfach für jeden Text 20 normale
.txt-Dateien anlegen, aber das ist ja eher unprofessionell.
Alles in eine Datei untereinander und getrennt durch
Sprungmarken wie bei einer .ini wären super, gibt es
dafür schon fertige Befehle?
Oder wie sieht es aus mit einer richtigen Datenbank?
Geht sowas OHNE das der User irgendwelche speziellen
Programme installiert haben muss (Access, SQL, ...)?
Verfasst: 18.03.2005 22:01
von zigapeda
In einer Text datei hab ich schon mal einen Code geschrieben. Die Textdatei müsste dann so oder so ähnlich aussehen:
[ anfang der 20 Texte
] ende der 20 Texte
/ trennung der einzelnen texte
also z.B. so:
[text1/text2/ ... /text19/text20]
Verfasst: 18.03.2005 22:03
von Poser
Schrägstrich als Delimiter nehmen? Nunja

Verfasst: 18.03.2005 22:09
von zigapeda
Ja du kannst auch nur [ nehmen ich hab so was ähnliches auch schon programmiert aber nur für Daten da kommt kein / for also.
Code: Alles auswählen
ReadFile(0,"Text.txt")
text$ = ReadString()
lpos = 0
Dim text.s(20)
For b = 0 To 19
If lpos = 0
pos1 = FindString(text$,"[",1)
pos2 = FindString(text$,"/",1)
lange = pos2 - pos1 - 1
text(0) = Mid(text$,pos1 + 1,lange)
Else
pos1 = FindString(text$,"/",lpos)
pos2 = FindString(text$,"/",lpos + 1)
lange = pos2 - pos1 - 1
text(b) = Mid(text$,pos1 + 1,lange)
EndIf
If b = 15
pos1 = FindString(text$,"/",lpos)
pos2 = FindString(text$,"]",lpos)
lange = pos2 - pos1 - 1
text(19) = Mid(text$,pos1 + 1,lange)
EndIf
lpos = pos2
Next b
Wenn du das / ändern willst musst du das hald auch im code ändern
Verfasst: 18.03.2005 22:39
von Poser
Naja aber was machst Du wenn im Text selber einige / vorkommen?
Dann kommt ja alles durcheinander...
Verfasst: 18.03.2005 23:00
von zigapeda
Ich sag ja wenn du das ändern willst musst du das im code auch ändern. Du kannst meinetwegen auch [dasisteintexttrennzeichen] nehmen. Das kommt in einem Normalen Text nicht vor.
Verfasst: 18.03.2005 23:18
von glubschi90
Code: Alles auswählen
Dim Texte.s(19)
; Texte() mit Texxten füllen z.B.
Texte(0)="Hallo!"
Texte(1)="Wie geht's?"
; usw...
CreateFile(0,"C:\Test.txt")
For i=0 To 19
WriteStringN(Texte(i))
Next
CloseFile(0)
;-------------
ReadFile(0,"C:\Test.txt")
For i=0 To 19
Texte(i)=ReadString()
Next
CloseFile(0)
; Und jetzt kann Texte() ausgelesen werden...
Debug Texte(0)
Debug Texte(1)
; o.Ä.
Hoffe, das hilft.

Verfasst: 18.03.2005 23:36
von zigapeda
da gibts nur das problem wenn in dem Text ein Zeilenumbruch vorkommt.
Verfasst: 18.03.2005 23:43
von glubschi90
Code: Alles auswählen
Dim Texte.s(19)
; Texte() mit Texxten füllen z.B.
Texte(0)="Hallo!"
Texte(1)="Wie geht's?"
; usw...
For i=0 To 19
ReplaceString(Texte(i),Chr(13)+Chr(10),Chr(25))
ReplaceString(Texte(i),Chr(10),Chr(25))
Next
CreateFile(0,"C:\Test.txt")
For i=0 To 19
WriteStringN(Texte(i))
Next
CloseFile(0)
;-------------
ReadFile(0,"C:\Test.txt")
For i=0 To 19
Texte(i)=ReadString()
Next
CloseFile(0)
For i=0 To 19
ReplaceString(Texte(i),Chr(25),Chr(13)+Chr(10))
Next
; Und jetzt kann Texte() ausgelesen werden...
Debug Texte(0)
Debug Texte(1)
; o.Ä.
Was besseres fällt mir im Moment nich' ein... *gääääääähhnn*

Verfasst: 19.03.2005 08:53
von DarkDragon
Soll die Textdatei dann auch vom User lesbar sein? Wenn nicht könnte man doch einfach mit WriteData alles reinschreiben und mit ReadByte lesen. :P
Code: Alles auswählen
Dim Text.s(19) ;Array mit 20 Strings
;Schreibe unterschiedliche Texte in den Array
For k=0 To 19
Text(k) = "Dies ist Text Nr.: "+Str(k+1)
Next
If CreateFile(0, "C:\test.txt") ;Erstelle die Datei
For k=0 To 19
WriteData(@Text(k), Len(Text(k))+1) ;Schreib alles rein
Next
CloseFile(0)
EndIf
;Den Array leeren
For k=0 To 19
Text(k) = ""
Next
If ReadFile(1, "C:\test.txt") ;Datei auslesen
;Nützliche Variablen auf 0 setzen
char.b = 0
k = 0
While Eof(1) = 0
char = ReadByte()
If char = 0 ;Wenn das ausgelesene byte 0 ist(0 = ende eines Strings)...
Debug Text(k) ;...dann gib den vorherigen Text aus oder...
k + 1
Else
Text(k) + Chr(char) ;...füge dem Textarray das byte als Zeichen hinzu.
EndIf
Wend
CloseFile(1)
EndIf
DeleteFile("C:\test.txt") ;Lösche diese unnötige Datei ;)