Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fehler beim Speichern??? (https://www.delphipraxis.net/130801-fehler-beim-speichern.html)

DeddyH 13. Mär 2009 13:46

Re: Fehler beim Speichern???
 
Was gibt denn FileSize aus?

ichnixwissen 13. Mär 2009 13:56

Re: Fehler beim Speichern???
 
was is FileSize? :wiejetzt:

Klaus01 13. Mär 2009 13:59

Re: Fehler beim Speichern???
 
FileSize und F1 drücken dann kommt die Erklärung.

Grüße
Klaus

nahpets 13. Mär 2009 14:02

Re: Fehler beim Speichern???
 
Hallo,

wie sieht Deine Datei aus, häng' sie hier mal bitte dran. Enthält die Datei für jeden Eintrag eine Zeile? Dann muss Du beim Lesen den Zeilenvorschub berücksichtigen. Beim Lesen von Strings musst Du berücksichtigen, dass das 0. Byte die Längenangabe zum String enthält. Für string[20] müssen in der Datei daher 21 Byte zur Verfügung stehen bzw. für einen Eintrag 63 Byte.

Versuch es mal bitte mit 'ner geänderten Typedefinition für TEintrag:
Delphi-Quellcode:
type TEintrag = record
  zahl: array[1..20] of Char;
  zeit: array[1..20] of Char;
  datum: array[1..20] of Char;
end;
Wenn die Datei nun ein "einzeler" ist, wollte alle 60 Byte ein neuer Eintrag stehen und mit Deiner Routine zu lesen sein.

Filesize sagt Dir, wieviele Sätze Du in Deiner Datei hast. Mach mal bitte hinter das Reset(Datei) ein:
Delphi-Quellcode:
ShowMessage(IntToStr(FileSize(datei)));
und prüf', ob das Ergebnis mit der von Dir erwarteten Anzahl von Einträgen in der Datei übereinstimmt.

ichnixwissen 13. Mär 2009 14:19

Re: Fehler beim Speichern???
 
er gibt die message 10 ( wie die zeilen in dem stringgrid) aus... wie wandel ich dann string in char um?
Danke für die Hilfe

nahpets 13. Mär 2009 14:33

Re: Fehler beim Speichern???
 
Hallo,

von String nach Array Of Char sollte so gehen:
Delphi-Quellcode:
  // von string nach array
copymemory(@Eintrag.zahl[low(Eintrag.zahl)],@s[1],sizeof(Eintrag.zahl));
s ist hier der von Dir zu verwendende String.

Reinhardtinho 13. Mär 2009 14:41

Re: Fehler beim Speichern???
 
Oder auch mit der Funktion StrPCopy.

nahpets 13. Mär 2009 15:04

Re: Fehler beim Speichern???
 
Zitat:

Zitat von Reinhardtinho
Oder auch mit der Funktion StrPCopy.

Wie ist denn dann die korrekte Syntax?
Delphi-Quellcode:
type Teintrag = record
       zahl: array[1..20] of char;
       zeit: array[1..20] of char;
       datum: array[1..20] of char;
     end;
var
  s : String;
  Eintrag : TEintrag;
begin
  s := '1000,00';
  StrPCopy(Eintrag.Zahl,s);
end;
[Fehler] Unit1.pas(57): Inkompatible Typen: 'Array' und 'PAnsiChar'
StrPCopy funktioniert nur, wenn ein Array bei 0 beginnt.
Delphi-Quellcode:
type Teintrag = record
       zahl: array[0..19] of char;
       zeit: array[0..19] of char;
       datum: array[0..19] of char;
     end;
Okay, dass sollte in diesem Fall hier kein Problem sein.

ichnixwissen 13. Mär 2009 15:19

Re: Fehler beim Speichern???
 
wie is das dann auf mein problem bezogen? Ich versteh es nicht(bin kein Pro in Sachen Delphi) :(

nahpets 13. Mär 2009 15:51

Re: Fehler beim Speichern???
 
Hallo,
Zitat:

Zitat von ichnixwissen
wie is das dann auf mein problem bezogen? Ich versteh es nicht(bin kein Pro in Sachen Delphi) :(

ach eigentlich nicht wirklich, ist eher akademisch.

Wenn in einem Array der Index bei 0 beginnt, kann man mit StrPCopy dem Array einen String zuweisen, andernfalls muss man es so machen:
Delphi-Quellcode:
copymemory(@Eintrag.zahl[low(Eintrag.zahl)],@s[1],sizeof(Eintrag.zahl));
Da ich Deine ursprüngliche Definition von string[20] auf array[1..20] of char geändert hatte, funktioniert StrPCopy nicht. Wenn Du hergehst und aus array[1..20] of char überall array[0..19] of char machst, dann kannst Du StrPCopy benutzen, was den Quelltext sicherlich lesbarer macht. Falls Du inzwischen Dein Problem gelöst haben solltest, dann lass das Programm so wie es ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:20 Uhr.
Seite 2 von 3     12 3      

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-2025 by Thomas Breitkreuz