|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1037 Wohnort: Niederbayern
|
Verfasst am: 24.03.2017, 05:28 Titel: Befehl Open - Leerzeichen Problem? |
|
|
Code: | 012 Test
022
032
042 2017/03/21
052 2017/03/21
062 20
072 11
092 Swiss System
102
122
132
XXR 7
001 1 mIM Schneider,Ilja 2517 GER 4663306 1984/00/00 2.5 3 11 b 1 6 w = 5 b 1
001 2 mFM Schneider,Igor 2287 USA 2019043 1988/00/00 2.0 5 12 w 1 7 b 1 4 w 0
001 3 m Schneider Solari,Erwin 2090 CHI 3404692 1979/00/00 2.0 6 13 b 1 8 w + 10 w 0
001 4 m Schneider Sanchez,Carlos D. 2038 ESP 22230440 1981/00/00 3.0 1 14 w 1 9 b 1 2 b 1
001 5 m Schneider Ristol,Alejandro 1932 ESP 2283239 1970/00/00 1.0 10 15 b 1 10 w 0 1 w 0 |
Ich stehe vor einem kleinen Programmierproblem! Ich will den Text in dem Format so wie er oben ist, in eine Datei abspeichern können. Benutzerdefiniert natürlich!!! Das Problem sind die Leerzeichen. Diese müssen vorhanden sein! Wenn es eine 1-stellige Zahl ist, sind quasi mehr Leerzeichen vorhanden als wenn es eine 4-stellige Zahl ist. Der Abstand zwischen den Zahlen/Buchstaben (001 bis zum mIM) ist immer gleich! Auch dort wo zum Beispiel 5 b 1 (1. Zeile bei Schneider Ilja ganz hinten) steht, kann noch etwas hinzu kommen. Je nach dem wie viele Runden es sind. Beim Open Befehl erhalte ich folgendes:
Das ist etwas zu breit!
Was kann ich tun bzw. wie löse ich das Problem? Mir fehlt da im Moment noch die Idee dazu.
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 24.03.2017, 12:45 Titel: |
|
|
Code: |
Dim Text as String = "abc"
Dim MaxLen as Integer = 10
Print "|" & Space(MaxLen - Len(Text)) & Text & "|"
Print "|" & Text & Space(MaxLen - Len(Text)) & "|"
|
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
|
HorstD
Anmeldungsdatum: 01.11.2007 Beiträge: 107
|
Verfasst am: 24.03.2017, 15:00 Titel: |
|
|
Zitat: | wie löse ich das Problem? |
Zeig' mal deinen Code.
Wenn Leerzeichen im String vorhanden sin, werden sie genauso gespeichert.
Code: |
Dim t As String
t= "001 1 mIM Schneider,Ilja 2517 GER 4663306 1984/00/00 2.5 3 11 b 1 6 w = 5 b 1 "
Open "open.txt" For Output As #1
Print #1, t
Close #1
|
|
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1037 Wohnort: Niederbayern
|
Verfasst am: 24.03.2017, 15:41 Titel: |
|
|
HorstD hat Folgendes geschrieben: | Zitat: | wie löse ich das Problem? |
Zeig' mal deinen Code.
Wenn Leerzeichen im String vorhanden sin, werden sie genauso gespeichert.
Code: |
Dim t As String
t= "001 1 mIM Schneider,Ilja 2517 GER 4663306 1984/00/00 2.5 3 11 b 1 6 w = 5 b 1 "
Open "open.txt" For Output As #1
Print #1, t
Close #1
|
| So soll es ja nicht sein, da das ganze nicht benutzerdefiniert ist. Die Name können unterschiedlich sein! Auch dort wo 5 b 1 steht, kann dahinter noch viel mehr stehen.
Zitat: | Zeig' mal deinen Code. | Es gibt leider so gut wie noch keinen! Nur das hier:
Code: | SCREENRES 640, 320, 32
DIM AS INTEGER i, j, k
i = 401
j = 19
k = 2
DIM f AS INTEGER = FREEFILE
OPEN "Test.txt" FOR OUTPUT AS #f
PRINT #f, i, j, k
CLOSE #f
SLEEP
END
|
ThePuppetMaster hat Folgendes geschrieben: | Code: |
Dim Text as String = "abc"
Dim MaxLen as Integer = 10
Print "|" & Space(MaxLen - Len(Text)) & Text & "|"
Print "|" & Text & Space(MaxLen - Len(Text)) & "|"
|
MfG
TPM | Das geht schon in die richtige Richtung! Das war auch mein Gedanke zunächst.
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 24.03.2017, 16:15 Titel: Text mit fester Spaltenbreite - FORMAT |
|
|
Hallo,
ich glaube, du möchtest ein Textformat mit fester Spaltenbreite haben, richtig? Das ist neben CSV (comma-separated values) eine der Möglichkeiten, um tabellarische Daten in reinen Textdateien zu speichern.
In FreeBASIC kann man dazu FORMAT benutzen. Es unterstützt die Ausgabe von Zahlen mit führenden Nullen oder Leerzeichen.
Code: | #include "vbcompat.bi"
Dim x(1 to ...) As Integer = { 42, 1, 999, 1234 }
Dim Dateipfad As String = ExePath + "\AlwimFesteSpaltenbreite.txt"
Open Dateipfad For Output As #1
For i As Integer = LBound(x) To UBound(x)
Print #1, Format( x(i), "0000" ); "xyz";
Next i
Print #1, ""
Close #1
Exec "c:\windows\notepad.exe", Dateipfad |
In Excel gibt es übrigens auch ein Textformat mit fester Spaltenbreite (PRN).
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1037 Wohnort: Niederbayern
|
Verfasst am: 24.03.2017, 20:25 Titel: Re: Text mit fester Spaltenbreite - FORMAT |
|
|
Sebastian hat Folgendes geschrieben: | Hallo,
ich glaube, du möchtest ein Textformat mit fester Spaltenbreite haben, richtig? Das ist neben CSV (comma-separated values) eine der Möglichkeiten, um tabellarische Daten in reinen Textdateien zu speichern.
In FreeBASIC kann man dazu FORMAT benutzen. Es unterstützt die Ausgabe von Zahlen mit führenden Nullen oder Leerzeichen.
Code: | #include "vbcompat.bi"
Dim x(1 to ...) As Integer = { 42, 1, 999, 1234 }
Dim Dateipfad As String = ExePath + "\AlwimFesteSpaltenbreite.txt"
Open Dateipfad For Output As #1
For i As Integer = LBound(x) To UBound(x)
Print #1, Format( x(i), "0000" ); "xyz";
Next i
Print #1, ""
Close #1
Exec "c:\windows\notepad.exe", Dateipfad |
In Excel gibt es übrigens auch ein Textformat mit fester Spaltenbreite (PRN).
Viele Grüße!
Sebastian | Genau, das will ich! Es muss zum Schluss nur so sein, dass obiger Text in dem gleichen Format drin steht. Der Text ist natürlich ein anderer, aber das Format muss dann genau so sein. Nicht ganz einfach , das ganze! Aber immerhin etwas, mit dem ich arbeiten kann. Das hilft mir schon weiter!
Falls jemand noch eine gute Idee/Lösung hat, einfach posten. Bin dankbar für jeden Tipp!
Vielen herzlichen Dank für die bisherige Hilfe!
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 24.03.2017, 21:58 Titel: |
|
|
Man kann sich die passenden (Teil-)Strings auch selbst zusammenbasteln: Code: | Dim As Integer SpaltenBreite1, SpaltenBreite2, Zahl
Dim As String text
SpaltenBreite1 = 20
SpaltenBreite2 = 15
Zahl = 50
text = "Schmitz"
Print Right(String(SpaltenBreite1, " ") + Str(zahl), SpaltenBreite1);"*" 'rechtsbündig
Print Left(text + String(SpaltenBreite2, " "), SpaltenBreite2);"*" 'linksbündig
Sleep |
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
tom_dehn
Anmeldungsdatum: 05.10.2015 Beiträge: 30
|
Verfasst am: 25.03.2017, 01:19 Titel: Re: Text mit fester Spaltenbreite - FORMAT |
|
|
Hi Alwim,
ALWIM hat Folgendes geschrieben: |
Falls jemand noch eine gute Idee/Lösung hat, einfach posten. Bin dankbar für jeden Tipp! |
deine Text-Ausgabe schaut irgendwie "geschäftlich" oder nach "Verein" aus. Jedenfalls aus der Rubrik "sollte keine Fehler haben".
Wenn Du die Codierung ähnlich übersichtlich haben willst, schau Die mal folgenden Code an. Ne Menge Schreiberei, aber je nach Editor binnen weniger Minuten im Kasten.
Code: | DIM AS LONGINT i, j, k
i = 401:j = 19:k = 2
Dim As String iStr,jStr,kStr
'Althergebracht:
'
' zu RSet : da steht in der Doc was drin :)
'
Print "'Althergebracht:"
iStr=String(06," "):RSet iStr,Str(i)
jStr=String(08," "):RSet jStr,Str(j)
kStr=String(03," "):RSet kStr,Str(k)
print iStr;jStr;kStr
Print
' aehnlicher Effekt:
' Die Punkte statt der Blanks: Nur zu Visualisierung!
Print "'aehnlicher Effekt:"
Var FillerStr=String(40,".")
iStr=Right(FillerStr & i, 06)
jStr=Right(FillerStr & j, 08)
kStr=Right(FillerStr & k, 03)
print iStr;jStr;kStr
SLEEP
STOP
|
IMO ist dieses tabellarische Arbeiten letzlich bequemer bei Aenderungen.
Noch 'ne Anmerkung: "Integer" ist nicht klar definiert (32/64-Bit). Einmal "Long" oder "Longint" schreiben, und die Sache ist eindeutig.
Viel Erfolg!
Tom |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1037 Wohnort: Niederbayern
|
Verfasst am: 27.03.2017, 02:37 Titel: Re: Text mit fester Spaltenbreite - FORMAT |
|
|
tom_dehn hat Folgendes geschrieben: | Hi Alwim,
ALWIM hat Folgendes geschrieben: |
Falls jemand noch eine gute Idee/Lösung hat, einfach posten. Bin dankbar für jeden Tipp! |
deine Text-Ausgabe schaut irgendwie "geschäftlich" oder nach "Verein" aus. Jedenfalls aus der Rubrik "sollte keine Fehler haben".
Wenn Du die Codierung ähnlich übersichtlich haben willst, schau Die mal folgenden Code an. Ne Menge Schreiberei, aber je nach Editor binnen weniger Minuten im Kasten.
Code: | DIM AS LONGINT i, j, k
i = 401:j = 19:k = 2
Dim As String iStr,jStr,kStr
'Althergebracht:
'
' zu RSet : da steht in der Doc was drin :)
'
Print "'Althergebracht:"
iStr=String(06," "):RSet iStr,Str(i)
jStr=String(08," "):RSet jStr,Str(j)
kStr=String(03," "):RSet kStr,Str(k)
print iStr;jStr;kStr
Print
' aehnlicher Effekt:
' Die Punkte statt der Blanks: Nur zu Visualisierung!
Print "'aehnlicher Effekt:"
Var FillerStr=String(40,".")
iStr=Right(FillerStr & i, 06)
jStr=Right(FillerStr & j, 08)
kStr=Right(FillerStr & k, 03)
print iStr;jStr;kStr
SLEEP
STOP
|
IMO ist dieses tabellarische Arbeiten letzlich bequemer bei Aenderungen.
Noch 'ne Anmerkung: "Integer" ist nicht klar definiert (32/64-Bit). Einmal "Long" oder "Longint" schreiben, und die Sache ist eindeutig.
Viel Erfolg!
Tom | Nein, weder Geschäftlich noch Verein! Ich habe lediglich vor ein Programm zu schreiben, dass ein TRF-File bzw. eine Datei im TRF-Format erstellt. Ein Spezialprogramm namens JaVaFo sollte diese Datei später einlesen können.
Im Moment komme ich nicht dazu, mich weiter damit zu beschäftigen. Kann nur hoffen, dass ich von dem geposteten, etwas davon gebrauchen kann? Das ganze ist komplexer als ich dachte!
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1037 Wohnort: Niederbayern
|
Verfasst am: 28.03.2017, 05:12 Titel: |
|
|
ThePuppetMaster hat Folgendes geschrieben: | Wenn es sich hierbei um das http://ratings.fide.com/download/fidexchg.txt handelt, könntest du das unter umständen auch sehr viel einfacher mit einem gut definiertem UDT lösen.
MfG
TPM |
Ja, das dürfte es sein! Zumindest sieht es nach dem hier aus was ich meine: https://www.fide.com/FIDE/handbook/C04Annex2_TRF16.pdf
Noch habe ich keine Zeit und Lust gehabt, mir das in Ruhe mal näher anzuschauen. Aber das werde ich irgendwann schon noch machen!
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 28.03.2017, 06:30 Titel: |
|
|
Hier ein kleiner Trick, mit dem man die kompletten Daten eines (beliebig umfangreichen) UDT ohne viel Aufwand in eine Datei schreiben und wieder auslesen kann. Einzige Einschränkung: Strings müssen eine feste Länge haben. Code: | Type tTest
As Integer a
As Integer b
As String*4 c
As Double d
End Type
Union uTest
As tTest x
As String*SizeOf(tTest) y
End Union
Print SizeOf(tTest)
Print
Dim As tTest n1, n2
n1.a = 257
n1.b = 2
n1.c = "abcdef"
n1.d = 1234.5678
Dim As uTest u
u.x = n1
Print u.y;"*"
Print
Open ExePath + "\tf.txt" For Output As #1
Print #1, u.y;
Close
Dim As uTest v
Open ExePath + "\tf.txt" For Binary As #1
v.y = Input (SizeOf(tTest),#1)
Close
Print v.y;"*"
Print
n2 = v.x
Print n2.a
Print n2.b
Print n2.c;"*"
Print n2.d
Sleep |
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
tom_dehn
Anmeldungsdatum: 05.10.2015 Beiträge: 30
|
Verfasst am: 28.03.2017, 20:19 Titel: |
|
|
Hi,
noch mal der Hinweis: Integer ist nicht fest definiert.
Beim Zurücklesen von Disk kann es Überraschungen geben...
grindstone hat Folgendes geschrieben: | ...UDT...in eine Datei schreiben und wieder auslesen kann. [...] Code: | Type tTest
As Integer a ' 32 Bit/64 Bit ??
As Integer b
As String*6 c ' damit der Beispielstring "abcdef" auch reinpasst :)
As Double d
End Type |
Gruß
grindstone |
Ansonsten prima Tipp, ich hab bisher alles in nur -1- UDT gewurstet und musste selber die Größen berechnen...
Tom |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 28.03.2017, 20:36 Titel: |
|
|
Bevor jetzt noch mal LONG/LONGINT und ähnliche Datentypen beworben werden: Mit Integer<32>, Integer<64> usw. kann man wesentlich "sprechendere" Typdeklarationen erstellen, die ebenfalls auf allen Systemen gleich groß sind.
"Wie groß ist noch mal LONG?"
"Ist LONG immer größer als INTEGER?"
"Was ist größer, LONG oder LONGINT?"
Diese Fragen gehören mit Integer<32> der Vergangenheit an, da weiß man sofort, wie groß der Datentyp ist. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
tom_dehn
Anmeldungsdatum: 05.10.2015 Beiträge: 30
|
Verfasst am: 29.03.2017, 15:20 Titel: |
|
|
Jojo hat Folgendes geschrieben: | Bevor jetzt noch mal LONG/LONGINT und ähnliche Datentypen beworben werden:
Diese Fragen gehören mit Integer<32> der Vergangenheit an, da weiß man sofort, wie groß der Datentyp ist. |
Stimmt. Man sollte es aber auch verwenden, meinetwegen auch <qword> oder <dword>. Darum ging es mir, nicht um "Reklame" oder so was.
Tom |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 29.03.2017, 21:59 Titel: |
|
|
Die WORD/DWORD/QWORD-Datentypen aus der WinAPI sind aus historischen Gründen leider auch unglücklich benannt: Ein WORD sollte eigentlich der Wortbreite der Computerarchitektur entsprechen, auf einem 16-Bit-System also 16 Bit, auf einem 32-Bit-System 32 Bit und auf einem 64-Bit-System 64 Bit. Die WinAPI-Datentypen WORD/DWORD stammen noch aus 16-Bit-Zeiten und konnten auch nicht so einfach ihre Bedeutung ändern beim Sprung ins 32-Bit-Zeitalter (sonst wäre ziemlich viel existierende Software explodiert ). So ist ein Double-Word auf einer 32-Bit-Architektur immer noch 32 Bit breit statt 64 Bit. Die Datentypen sollten also nur im Kontext der WinAPI verwendet werden, woanders sollte man wirklich mit Integer<?> hantieren. Auf einem nicht-Intel-System könnten WORD und co wiederum ganz andere Größen haben. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1037 Wohnort: Niederbayern
|
Verfasst am: 30.03.2017, 00:43 Titel: |
|
|
Um mal beim Thema zu bleiben:
Der Tipp mit Format war nicht schlecht! Bloß, wie kann ich aber bei dem Befehl Open folgendes erreichen:
Code: | OPEN Dateipfad FOR OUTPUT AS #f
PRINT #f, FORMAT(i, "0000"); " "; FORMAT(j, "0000"); ... |
Bei dem Print soll je nach Anzahl, ein Datensatz oder mehrere in einer Zeile ausgegeben werden! Wurde 5x erkannt, so soll nicht nur i sondern auch j, k, l und m ausgegeben werden in der selben Zeile! Also in etwas so:
Code: | PRINT #f, FORMAT(i, "0000"); " "; FORMAT(j, "0000"); " "; FORMAT(k, "0000"); " "; FORMAT(l, "0000"); " "; FORMAT(m, "0000"); " " |
Nur eben so oft, wie am Anfang des Programms definiert wurde! Ist das irgendwie machbar?
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
Muttonhead
Anmeldungsdatum: 26.08.2008 Beiträge: 562 Wohnort: Jüterbog
|
Verfasst am: 30.03.2017, 06:32 Titel: |
|
|
Code: | #include "vbcompat.bi"
dim as integer datensatzbeschreibung(4)'Datensatz besteht aus 5 Einträgen mit vielleicht unterschiedl. Längen
datensatzbeschreibung(0)=3
datensatzbeschreibung(1)=4
datensatzbeschreibung(2)=8
datensatzbeschreibung(3)=2
datensatzbeschreibung(4)=5
dim as integer ff=freefile
open "Datei" for output as ff
for Datensatzzaehler as integer=0 to 20
for db as integer=0 to ubound(Datensatzbeschreibung)
print #ff, format (rnd*100, string(Datensatzbeschreibung(db),"0"));
print #ff, " ";
next db
print #ff,
next Datensatzzaehler
close ff |
|
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 30.03.2017, 16:38 Titel: |
|
|
Ich habe ALWIMs Frage etwas anders verstanden: Code: | #Include "vbcompat.bi"
Dim x(1 To ...) As Integer = { 42, 1, 999, 1234, 5678, 5, 36 }
Dim As Integer AnzahlDatensaetzeProZeile, f
Dim As String dateipfad = ExePath + "\testfile.txt"
AnzahlDatensaetzeProZeile = 5
f = FreeFile
Open Dateipfad For Output As #f
For i As Integer = 1 To AnzahlDatensaetzeProZeile
Print #f, Format(x(i), "0000"); " ";
Next
Print #f, "" 'zeilenabschluss
Close #f | oder, wenn die Bezeichnungen mit i, j, k usw. beibehalten werden sollen: Code: | #Include "vbcompat.bi"
Dim As Integer i = 42, j = 1, k = 999, l = 1234, m = 5678, n = 5, o = 36
Dim As Integer AnzahlDatensaetzeProZeile, f
Dim As String dateipfad = ExePath + "\testfile.txt"
AnzahlDatensaetzeProZeile = 5
f = FreeFile
Open Dateipfad For Output As #f
If AnzahlDatensaetzeProZeile >= 1 Then : Print #f, Format(i, "0000"); " "; : EndIf
If AnzahlDatensaetzeProZeile >= 2 Then : Print #f, Format(j, "0000"); " "; : EndIf
If AnzahlDatensaetzeProZeile >= 3 Then : Print #f, Format(k, "0000"); " "; : EndIf
If AnzahlDatensaetzeProZeile >= 4 Then : Print #f, Format(l, "0000"); " "; : EndIf
If AnzahlDatensaetzeProZeile >= 5 Then : Print #f, Format(m, "0000"); " "; : EndIf
If AnzahlDatensaetzeProZeile >= 6 Then : Print #f, Format(n, "0000"); " "; : EndIf
If AnzahlDatensaetzeProZeile >= 7 Then : Print #f, Format(o, "0000"); " "; : EndIf
Print #f, "" 'zeilenabschluss
Close #f |
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1037 Wohnort: Niederbayern
|
Verfasst am: 30.03.2017, 23:02 Titel: |
|
|
grindstone hat Folgendes geschrieben: | Ich habe ALWIMs Frage etwas anders verstanden: Code: | #Include "vbcompat.bi"
Dim x(1 To ...) As Integer = { 42, 1, 999, 1234, 5678, 5, 36 }
Dim As Integer AnzahlDatensaetzeProZeile, f
Dim As String dateipfad = ExePath + "\testfile.txt"
AnzahlDatensaetzeProZeile = 5
f = FreeFile
Open Dateipfad For Output As #f
For i As Integer = 1 To AnzahlDatensaetzeProZeile
Print #f, Format(x(i), "0000"); " ";
Next
Print #f, "" 'zeilenabschluss
Close #f | oder, wenn die Bezeichnungen mit i, j, k usw. beibehalten werden sollen: Code: | #Include "vbcompat.bi"
Dim As Integer i = 42, j = 1, k = 999, l = 1234, m = 5678, n = 5, o = 36
Dim As Integer AnzahlDatensaetzeProZeile, f
Dim As String dateipfad = ExePath + "\testfile.txt"
AnzahlDatensaetzeProZeile = 5
f = FreeFile
Open Dateipfad For Output As #f
If AnzahlDatensaetzeProZeile >= 1 Then : Print #f, Format(i, "0000"); " "; : EndIf
If AnzahlDatensaetzeProZeile >= 2 Then : Print #f, Format(j, "0000"); " "; : EndIf
If AnzahlDatensaetzeProZeile >= 3 Then : Print #f, Format(k, "0000"); " "; : EndIf
If AnzahlDatensaetzeProZeile >= 4 Then : Print #f, Format(l, "0000"); " "; : EndIf
If AnzahlDatensaetzeProZeile >= 5 Then : Print #f, Format(m, "0000"); " "; : EndIf
If AnzahlDatensaetzeProZeile >= 6 Then : Print #f, Format(n, "0000"); " "; : EndIf
If AnzahlDatensaetzeProZeile >= 7 Then : Print #f, Format(o, "0000"); " "; : EndIf
Print #f, "" 'zeilenabschluss
Close #f |
Gruß
grindstone | Das ist genau das was ich brauche! Quellcode 1 macht genau das was ich will. Nun kann ich das ganze auf meine Bedürfnisse anpassen. Was ich irgendwie nicht ganz verstanden habe: Wie erkennt der, dass eine neue Zeile beginnt?
Code: | For i As Integer = 1 To AnzahlDatensaetzeProZeile
Print #f, Format(x(i), "0000"); " ";
Next | Wenn ich mir den obigen Code so anschaue, gehe ich in erster Linie davon aus, dass der jedes mal eine neue Zeile beginnt? Deswegen kam ich da nicht so recht weiter.
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
|
|
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.
|
|