AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Delphi Record in File speicher, in C öffnen
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi Record in File speicher, in C öffnen

Ein Thema von chaoslion · begonnen am 9. Sep 2007 · letzter Beitrag vom 9. Sep 2007
Antwort Antwort
chaoslion

Registriert seit: 1. Mär 2006
52 Beiträge
 
#1

Delphi Record in File speicher, in C öffnen

  Alt 9. Sep 2007, 16:49
Hey Leute,
ich hab ein record:
Delphi-Quellcode:
type TRec = record
 txt: string;
 len: integer;
end;

dies würde ich gerne in eine Datei speichern, welche ich dann in C öffnen möchte.
Wie sieht das mit den Datentypen aus, ich denke das Delphi-Integer wird bei C passen, aber wie sieht es mit dem string aus?

Öffnen würde ich es dann mit fopen, fread und dem struct
Code:
struct TRec {
 ???? txt;
 int len;
};
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#2

Re: Delphi Record in File speicher, in C öffnen

  Alt 9. Sep 2007, 17:01
Hi, wenn Du einen String fester Länge nimmst, sollte es gehen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
chaoslion

Registriert seit: 1. Mär 2006
52 Beiträge
 
#3

Re: Delphi Record in File speicher, in C öffnen

  Alt 9. Sep 2007, 17:14
und muss in C dann txt vom typ char[x] sein?
also ich nehme einen string[255], dann muss ich auch einen char[255] nehmen?
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Delphi Record in File speicher, in C öffnen

  Alt 9. Sep 2007, 17:21
Hallo chaoslion,

vielleicht hilft Dir das weiter.

Delphi-Quellcode:
typedef
struct
    {char txt[81];
      int len;
    }
 TRec;
Delphi-Quellcode:
type
  TRec = packed record
      Txt: string[80];
      Len: integer;
End;
Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#5

Re: Delphi Record in File speicher, in C öffnen

  Alt 9. Sep 2007, 17:22
Zitat von chaoslion:
und muss in C dann txt vom typ char[x] sein?
also ich nehme einen string[255], dann muss ich auch einen char[255] nehmen?
Fast string[255] und char[256]. Warum? Delphi/pascal speichern bei ShortStrings in [0] die Länge und indizieren mit 1 beginnend. In C wird mit 0 angefangen. d.h. char[256] nehmen und auch mit 1 anfangen und es sollte klappen...
(oder in Delphi n array[0..254] of char nehmen. Das geht natürlich auch)

BTW: N Hex-Editor is da manchmal praktisch...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Delphi Record in File speicher, in C öffnen

  Alt 9. Sep 2007, 17:32
Hallo,

in C beginnt der Stringinhalt mit dem ersten Element eines Arrays(txt_array[0]), das Ende des Strings wird durch ein NULLZEICHEN (ASCII – Code: 0) markiert. Für die Speicherung von 80 Zeichen muss also ein Array mit 81 Elementen benutzt werden.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#7

Re: Delphi Record in File speicher, in C öffnen

  Alt 9. Sep 2007, 18:03
Zitat von Chemiker:
in C beginnt der Stringinhalt mit dem ersten Element eines Arrays(txt_array[0]), das Ende des Strings wird durch ein NULLZEICHEN (ASCII – Code: 0) markiert. Für die Speicherung von 80 Zeichen muss also ein Array mit 81 Elementen benutzt werden.
Jein. Delphi wird sich wohl nicht so einfach dran halten(außer man stellt es händisch sicher ==> mit FillChar z.B.). Wenn man also n Struct mit größerer Länge hat, wird sich das C-Prog an den kleineren Datensätzen wohl etwas verschlucken... Bevor man dann aber die Strings aus dem Record in C-Stringfunktionen nutzen kann, muss man diese noch entsprechend behandeln...

Mit den packed hast du allerdings Recht. Ohne das macht das Alignment Probleme.

mfg

Christian
Kaum macht man's richtig, schon klappts!
  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 10:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz