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:

Befehl Open - Leerzeichen Problem?
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 24.03.2017, 04:28    Titel: Befehl Open - Leerzeichen Problem? Antworten mit Zitat

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:
Code:
401           19            2
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
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 24.03.2017, 11:45    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
HorstD



Anmeldungsdatum: 01.11.2007
Beiträge: 107

BeitragVerfasst am: 24.03.2017, 14:00    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 24.03.2017, 14:41    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 24.03.2017, 15:15    Titel: Text mit fester Spaltenbreite - FORMAT Antworten mit Zitat

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
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 24.03.2017, 19:25    Titel: Re: Text mit fester Spaltenbreite - FORMAT Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 24.03.2017, 20:58    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
tom_dehn



Anmeldungsdatum: 05.10.2015
Beiträge: 30

BeitragVerfasst am: 25.03.2017, 00:19    Titel: Re: Text mit fester Spaltenbreite - FORMAT Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 27.03.2017, 01:37    Titel: Re: Text mit fester Spaltenbreite - FORMAT Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 28.03.2017, 02:08    Titel: Antworten mit Zitat

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
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 28.03.2017, 04:12    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 28.03.2017, 05:30    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
tom_dehn



Anmeldungsdatum: 05.10.2015
Beiträge: 30

BeitragVerfasst am: 28.03.2017, 19:19    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 28.03.2017, 19:36    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
tom_dehn



Anmeldungsdatum: 05.10.2015
Beiträge: 30

BeitragVerfasst am: 29.03.2017, 14:20    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 29.03.2017, 20:59    Titel: Antworten mit Zitat

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 zwinkern). 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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 29.03.2017, 23:43    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 561
Wohnort: Jüterbog

BeitragVerfasst am: 30.03.2017, 05:32    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

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

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 30.03.2017, 22:02    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
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