AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

file of char delphi7 geht nicht

Ein Thema von lecomte · begonnen am 9. Nov 2011 · letzter Beitrag vom 11. Nov 2011
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

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

AW: file of char delphi7 geht nicht

  Alt 10. Nov 2011, 18:04
Bist Du sicher, dass es sich um ein File of Char handelt? Vermutlich ist da ein #0 o.Ä. dazwischen, was den String dann durcheinander bringt. An Deiner Stelle würde ich es auch einmal mit einem Stream versuchen, aus dem Du dann die für Dich interessanten Bytes herauskopierst.

[edit] Gerade ausprobiert:
Delphi-Quellcode:
var
  fs: TFileStream;
  ss: TStringStream;
  s: string;
begin
  fs := TFileStream.Create(Dateiname, fmOpenRead);
  try
    ss := TStringStream.Create('');
    try
      fs.Position := 12;
      ss.CopyFrom(fs, fs.Size - fs.Position);
      s := ss.DataString;
      ShowMessage(s);
    finally
      ss.Free;
    end;
  finally
    fs.Free;
  end;
end;
[/edit]
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

Geändert von DeddyH (10. Nov 2011 um 18:27 Uhr)
  Mit Zitat antworten Zitat
lecomte

Registriert seit: 9. Nov 2011
Ort: wien, österreich
8 Beiträge
 
Delphi 7 Personal
 
#2

AW: file of char delphi7 geht nicht

  Alt 10. Nov 2011, 18:26
mit streams hab ich keine erfahrung (hab jetzt 25 jahre mit turbo pascal gelebt ). hab es grad mit handbuch versucht, bin aber gescheitert.

wie lese ich aus der datei "inbox.toc" die ersten 322 zeichen heraus (die datei ist deutlich länger als 322) und übertrage die zeichen 122 bis 153 auf einen string?
oder ist eine solche frage unüblich in einem forum? krieg ich jetzt die antwort read the effing manual ?
Thomas Lecomte
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: file of char delphi7 geht nicht

  Alt 10. Nov 2011, 18:28
Da haben sich jetzt Deine Antwort und mein Edit überschnitten
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
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.929 Beiträge
 
Delphi 12 Athens
 
#4

AW: file of char delphi7 geht nicht

  Alt 10. Nov 2011, 20:55
wie lese ich aus der datei "inbox.toc" die ersten 322 zeichen heraus (die datei ist deutlich länger als 322) und übertrage die zeichen 122 bis 153 auf einen string?
Welche Zeichen willst du nun? Nur die 32 genannten oder die ersten 322? Die genannten Zeichen:
Delphi-Quellcode:
var
  FileContents: TFileStream;
  MailData: AnsiString;
begin
  FileContents := TFileStream.Create(ExtractFilePath(ParamStr(0)) + 'inbox.toc', fmOpenRead);
  try
    FileContents.Position := 122;
    SetLength(MailData, 32);
    FileContents.ReadBuffer(Pointer(MailData), 32);
    ShowMessage(string(MailData));
  finally
    FileContents.Free;
  end;
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: file of char delphi7 geht nicht

  Alt 11. Nov 2011, 07:15
Meine Testdatei hatte den Inhalt A-K #0 L-Z. Eine Änderung auf Shortstring (=> string[255]) war nicht zielführend. Erst das Umstellen auf Streams brachte dann das gewünschte Ergebnis, da sich diese nicht um #0 und Konsorten scheren. Übrigens:
Zitat:
Delphi-Quellcode:
SetLength(MailData, 32);
FileContents.ReadBuffer(Pointer(MailData), 32);
Es wäre vielleicht weniger fehleranfällig, wenn man das so machte:
Delphi-Quellcode:
const
  LENGTH_REQUIRED = 32;
begin
  ...
  SetLength(MailData, LENGTH_REQUIRED);
  FileContents.ReadBuffer(Pointer(MailData), Length(MailData));
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
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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