| 
				
					|  | 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: 1048
 Wohnort: Niederbayern
 
 | 
			
				|  Verfasst am: 24.03.2017, 04: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: 1839
 Wohnort: [JN58JR]
 
 | 
			
				|  Verfasst am: 24.03.2017, 11: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: 110
 
 
 | 
			
				|  Verfasst am: 24.03.2017, 14: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: 1048
 Wohnort: Niederbayern
 
 | 
			
				|  Verfasst am: 24.03.2017, 14:41    Titel: |   |  
				| 
 |  
				| 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. 	  | 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
 
 | 
 | 
 
 
 Es gibt leider so gut wie noch keinen! Nur das hier: 	  | Zitat: |  	  | Zeig' mal deinen Code. | 
 
 
  	  | 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
 
 | 
 
 
 Das geht schon in die richtige Richtung! Das war auch mein Gedanke zunächst. 	  | 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
 | 
 
 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, 15: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: 1048
 Wohnort: Niederbayern
 
 | 
			
				|  Verfasst am: 24.03.2017, 19:25    Titel: Re: Text mit fester Spaltenbreite - FORMAT |   |  
				| 
 |  
				| 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! 	  | 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
 | 
 
 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: 1283
 Wohnort: Ruhrpott
 
 | 
			
				|  Verfasst am: 24.03.2017, 20: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, 00: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: 1048
 Wohnort: Niederbayern
 
 | 
			
				|  Verfasst am: 27.03.2017, 01:37    Titel: Re: Text mit fester Spaltenbreite - FORMAT |   |  
				| 
 |  
				| 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. 	  | 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
 | 
 
 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: 1839
 Wohnort: [JN58JR]
 
 |  |  
		| Nach oben |  |  
		|  |  
		| ALWIM 
 
  
 Anmeldungsdatum: 08.08.2006
 Beiträge: 1048
 Wohnort: Niederbayern
 
 | 
			
				|  Verfasst am: 28.03.2017, 04: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: 1283
 Wohnort: Ruhrpott
 
 | 
			
				|  Verfasst am: 28.03.2017, 05: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, 19: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, 19: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, 14: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, 20: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: 1048
 Wohnort: Niederbayern
 
 | 
			
				|  Verfasst am: 29.03.2017, 23: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: 569
 Wohnort: Jüterbog
 
 | 
			
				|  Verfasst am: 30.03.2017, 05: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: 1283
 Wohnort: Ruhrpott
 
 | 
			
				|  Verfasst am: 30.03.2017, 15:38    Titel: |   |  
				| 
 |  
				| Ich habe ALWIMs Frage etwas anders verstanden: oder, wenn die Bezeichnungen mit i, j, k usw. beibehalten werden sollen: 	  | 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
 | 
  	  | 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: 1048
 Wohnort: Niederbayern
 
 | 
			
				|  Verfasst am: 30.03.2017, 22:02    Titel: |   |  
				| 
 |  
				| 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? 	  | grindstone hat Folgendes geschrieben: |  	  | Ich habe ALWIMs Frage etwas anders verstanden: oder, wenn die Bezeichnungen mit i, j, k usw. beibehalten werden sollen: 	  | 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
 | 
  	  | 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
 | 
 
 
 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. 	  | Code: |  	  | For i As Integer = 1 To AnzahlDatensaetzeProZeile Print #f, Format(x(i), "0000"); " ";
 Next
 | 
 
 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.
 
 |  |