AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi Record in for-schleife

Ein Thema von ig66 · begonnen am 10. Jan 2020 · letzter Beitrag vom 12. Jan 2020
Antwort Antwort
DenkDirNix

Registriert seit: 13. Dez 2018
71 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Delphi Record in for-schleife

  Alt 10. Jan 2020, 16:47
Da Du mit den guten alten short-strings arbeitest ginge auch folgendes:

Code:
  var s: ansistring;
      size: word;

  size := sizeOf( ttestRecord );
  SetLength( s, size );
  move( testRecord.Test1[0], s[0], size )
Allerdings hast Du das Längenbyte jedes Strings mit drin und die Linebreaks fehlen.

Geändert von DenkDirNix (10. Jan 2020 um 17:32 Uhr) Grund: Ergänzt nach Kommentar von Michael
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Delphi Record in for-schleife

  Alt 10. Jan 2020, 16:51
Teste das mal. Das funktioniert nicht. (Aus mehreren Gründen)
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
EmWieMichael

Registriert seit: 28. Mär 2012
103 Beiträge
 
#3

AW: Delphi Record in for-schleife

  Alt 10. Jan 2020, 17:55
Zu dem Record (als "Packed" definiert) benötigt man eine zweite Struktur zur Definition der Felder des Records, z. B. ein Array, bei dem jedes Element Typ und Länge eines Feldes angibt. Mit den Informationen kann man dann die Position eines Feldes im Record berechnen und die Daten per Move auslesen.
Nutze ich zum Handling mit Datensätzen von Datenbanken.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Delphi Record in for-schleife

  Alt 10. Jan 2020, 18:03
Zu dem Record (als "Packed" definiert) benötigt man eine zweite Struktur zur Definition der Felder des Records, z. B. ein Array, bei dem jedes Element Typ und Länge eines Feldes angibt. Mit den Informationen kann man dann die Position eines Feldes im Record berechnen und die Daten per Move auslesen.
Nutze ich zum Handling mit Datensätzen von Datenbanken.
Das, nur in weniger umständlich, mache ich oben in meinem Code per RTTI.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
EmWieMichael

Registriert seit: 28. Mär 2012
103 Beiträge
 
#5

AW: Delphi Record in for-schleife

  Alt 11. Jan 2020, 08:13
Das, nur in weniger umständlich, mache ich oben in meinem Code per RTTI.
Das stimmt, für das Problem des TE ist Deine Lösung einfacher. Für meine Anforderungen wäre RTTI vermutlich nicht das Richtige, da ich a) weitere Informationen zu einzelnen Record-Feldern benötige und b) mehr als 40 Record-Typen als typlose Records an zig verschiedene Funktionen übergebe.
Ich muss allerdings zugeben, mich in der vergangenen Viertelstunde das erste Mal mit RTTI 'beschäftigt' zu haben...
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.650 Beiträge
 
Delphi 12 Athens
 
#6

AW: Delphi Record in for-schleife

  Alt 11. Jan 2020, 10:37
Kann man nicht den kompletten Record (muss natürlich im packed Format sein) als Blob speichern?
Ist bestimmt nicht die eleganteste Art, aber müsste doch gehen oder?
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
381 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Delphi Record in for-schleife

  Alt 12. Jan 2020, 13:00
Auf jeden Fall kann man den Record in einem File speichern, wenn mann dieses vom Typ her richtig definiert

Code:
Var
Ausgabedatei : File of MyRecord
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.316 Beiträge
 
Delphi 12 Athens
 
#8

AW: Delphi Record in for-schleife

  Alt 12. Jan 2020, 17:33
Muss nicht packed sein, aber das Format muß zumindestens statisch sein, nicht dass es in einem späteren Compilevvorgang oder mit anderen Optionen plötzlich anders ausgerichtet ist.

Align gleich, die Typen gleich, also auch nicht 32 Bit und 64 Bit vergessen, usw.
Und vor allem dürfen die Typen im Record keine Pointer enthalten, wie z.B. LongStrings (String/AnsiString/UnicodeString/...)

Gut, bei File of MyRecord hast den Vorteil dass'de nicht casten musst und die Datei nur diesen Record enthalten kann, aber auch in einfachen Binärdateien und Streams kann man Records speichern, wobei man dort dann eben über einen Pointer @DeinRecord + SizeOf(DeinRecord) geht.
PS: Viele gehen weg von diesen alten Pascal-Proceduren, hin zu Objektorientiert, also z.B. Streams und Daten-Objekte.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz