Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  File of Record

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  File of Record (613 mal gelesen)
Wyndorps
Ehrenmitglied V.I.P. h.c.
Ingenieur



Sehen Sie sich das Profil von Wyndorps an!   Senden Sie eine Private Message an Wyndorps  Schreiben Sie einen Gästebucheintrag für Wyndorps

Beiträge: 4563
Registriert: 21.07.2005

erstellt am: 23. Sep. 2016 13:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,
ich habe ein Type-Definition, die im Laufe der Berechnung mit ziemlich vielen Daten gefüllt wird.
Code:

Public Type GeoType
'** Informationen zu den Geometriegrößen
    Status(0 To GeoAnz) As Byte
    GName(1 To GeoAnz) As String '** Bezeichnung
    Wert(1 To GeoAnz) As Double
    Einheit(1 To GeoAnz) As String
    Schreibschutz(0 To GeoAnz) As Boolean

In Borland-Pascal gab es früher die Möglichkeit, einen File of Record zu definieren, also hier einen File vom Typ GeoType.
Da konnte man dann mit einer kurzen Befehlssequence einen kompletten Recordsatz (hier Geo vom Typ GeoType) speichern bzw. laden.

Code:

        assign(f_doppel,'FILE0001.TMP');
        rewrite(f_doppel);
        write(f_doppel,geo);
        close(f_doppel);

Gibt es etwas Ähnliches in VBA unter MS-EXCEL?

------------------
----------------

"Ich stimme mit der Mathematik nicht überein. Ich meine, daß die Summe von Nullen eine gefährliche Zahl ist."  (Stanislaw Jerzy Lec)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 25. Sep. 2016 19:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Wyndorps 10 Unities + Antwort hilfreich

Hallo Wyndorps,

Ach je, Turbo Pascal ... lang, lang ist es her.
Aber ja man kann in VBA sehr viel machen, das mit Pascal auch ging, mal abgesehen von gewissen Pointeraktionen.

Es gibt in VBA die Möglichkeit Recordsets zu definieren. Eine gute Hilfe dazu findest Du hier
Temporäre selbst erzeugte kannst Du in einer Datei ablegen und wieder einlesen.

Allerdings denke ich das brauchst Du gar nicht.
Du kannst Deinen Typ auch anders definieren und ergänzen
Als Beispiel mal ein binäres Schreiben

Code:

Public Type GeoType
'** Informationen zu den Geometriegrößen
    Status As Byte
    GName As String * 50 '** Bezeichnung
    Wert As Double
    Einheit As String * 4
    Schreibschutz As Boolean
End Type

Sub geo_test()

Sub geo_test()

    Dim GeoAnz As Long
    Dim GeoMax As Long
    GeoAnz = 0
    GeoMax = 100
   
    Dim Geo() As GeoType ' varibles Feld definieren
    ReDim Geo(GeoMax)    ' Feld dimensionieren
   
    If GeoAnz = GeoMax Then
      GeoMax = GeoMax + 100
      ReDim Preserve Geo(GeoMax) ' Feld vergrößern, Werte behalten
    End If
   
    With Geo(1)
      .GName = "32545"
      .Einheit = "m"
    End With
   
    Dim FF
    FF = FreeFile
    ' Datei löschen
    Open "FILE0001.TMP" For Output As #FF
    Close #FF
    ' Daten schreiben
    Open "FILE0001.TMP" For Binary Access Write As #FF Len = Len(Geo(1))
      For i = 1 To GeoAnz
        Put #FF, i, Geo(i)
      Next i
    Close #FF

End Sub

End Sub


Natürlich könnte man das auch ohne feste Stringdefinition in der Type-Anweisung, allerdings müßte man dann die Daten sequentiell schreiben und lesen. Schau Dir einfach mal die verschiedenen Open .. For .. Parameter an.

Grüße
Klaus 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Wyndorps
Ehrenmitglied V.I.P. h.c.
Ingenieur



Sehen Sie sich das Profil von Wyndorps an!   Senden Sie eine Private Message an Wyndorps  Schreiben Sie einen Gästebucheintrag für Wyndorps

Beiträge: 4563
Registriert: 21.07.2005

erstellt am: 26. Sep. 2016 08:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Das mit den dynamischen Feldern kannte ich sogar schon  , aber OPEN..FOR und PUT noch nicht.
Vielen Dank.

------------------
----------------

"Ich stimme mit der Mathematik nicht überein. Ich meine, daß die Summe von Nullen eine gefährliche Zahl ist."  (Stanislaw Jerzy Lec)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz