AGB  ·  Datenschutz  ·  Impressum  







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

file of char delphi7 geht nicht

Ein Thema von lecomte · begonnen am 9. Nov 2011 · letzter Beitrag vom 11. Nov 2011
Antwort Antwort
Seite 1 von 3  1 23      
lecomte

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

file of char delphi7 geht nicht

  Alt 9. Nov 2011, 20:28
Delphi-Version: 5
Hallo -

ich versuche, eine eudora-mailbox ("inbox.toc") als file of char zu lesen.
die chars 18 bis 31 beinhalten das datum.
das funktioniert mit turbo pascal 7, ergibt aber in delphi nur laufzeitfehler.

gibt es da einen unterschied in der file of char behandlung zwischen turbo pascal 7 und delphi7SE?


der relevante programmteil sieht wie folgt aus:

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

var st,mess:string;
toc:file of char;
ch:char;
fehler,tag,monat,jahr:integer;

...........
mess:='';
assignfile(toc,'inbox.toc');
reset(t);
for a:=1 to 218 do
begin
read(toc,ch);
mess:=mess+ch;
end;
st:=copy(mess,19,31);
st:=copy(st,1,pos(' ',st)-1);
val(copy(st,1,2),tag,fehler);
val(copy(st,4,2),monat,fehler);
val(copy(st,7,4),jahr,fehler);
..............


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

Gibt's einen Tipp?
Danke!
Thomas Lecomte

Geändert von lecomte (10. Nov 2011 um 19:34 Uhr) Grund: reset(t) muss reset(toc) heißen.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: file of char delphi7 geht nicht

  Alt 9. Nov 2011, 20:30
Zitat:
ergibt aber in delphi nur laufzeitfehler.
Der da wäre?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: file of char delphi7 geht nicht

  Alt 9. Nov 2011, 20:34
Nimm einfach einen TFileStream, das ist mit Delphi sinnvoller und einfacher.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: file of char delphi7 geht nicht

  Alt 9. Nov 2011, 20:51
assignfile(toc,'inbox.toc');
Probiers mal mit einer Angabe mit kompletten Pfad. Wer weiß welchen aktuellen Anwendungspfad deine Anwendung gerade hat.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#5

AW: file of char delphi7 geht nicht

  Alt 10. Nov 2011, 00:06
Ist ja vielleicht nur falsch abgetippt:

assignfile(toc,'inbox.toc');
reset(t);
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
lecomte

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

AW: file of char delphi7 geht nicht

  Alt 10. Nov 2011, 16:03
danke für die hilfeversuche.
in der tat gibt es bei dem von mir vorgestellten programmtext einen tippfehler, der aber im tatsächlichen programm nicht vorhanden ist: statt "reset(t)" gehört "reset(toc)".

die datei "inbox.toc" wird von keinem anderen programm verwendet. sie ist eine kopie der tatsächlichen eudora-inbox.
"inbox.toc" lässt sich auch problemlos lesen und in einen anderen file kopieren - zeichen für zeichen. die zeichen lassen sich auch alle in einen string kopieren.

Bloss:
dort, wo dann in turbo pascal tatsächlich interpretierbare werte zu finden sind, stehen in delphi nur zeichen, die wie ein kleines quadrat aussehen.

meine frage ist daher nach wie vor: gibt es beim lesen eines file of char einen relevanten unterschied zwischen dem, was ein DOS-basiertes programm (turbo pascal) und ein windows porgramm (delphi7) mit ein und dem gleichen zeichen anstellt??
Thomas Lecomte
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: file of char delphi7 geht nicht

  Alt 10. Nov 2011, 16:10
TP verwendet ASCII, Delphi 7 aber Ansi. Versuch doch einmal, Deinen String mit MSDN-Library durchsuchenOEMToCharBuff in Ansi umzuwandeln.

[edit] Ein Test mit Delphi 2007 ohne großartige Fehlerbehandlung (die Datei ist ASCII-kodiert):
Delphi-Quellcode:
var
  s: Ansistring;
  f: file of AnsiChar;
  c: AnsiChar;
begin
  AssignFile(f, 'C:\temp\Gnödelgnüdel.txt');
  {$I-}
  Reset(f);
  {$I+}
  if IOResult = 0 then
    begin
      while not EOF(f) do
        begin
          read(f, c);
          s := s + c;
        end;
      CloseFile(f);
    end;
  ShowMessage(s); //Gn”delgndel
  OEMToCharBuffA(PAnsiChar(s), PAnsiChar(s), Length(s));
  ShowMessage(s); //Gnödelgnüdel
end;
Ich verwende OEMToCharBuff, weil bei OEMToChar eine Sicherheitswarnung im MSDN steht, also besser nicht benutzen. [/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 16:38 Uhr)
  Mit Zitat antworten Zitat
lecomte

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

AW: file of char delphi7 geht nicht

  Alt 10. Nov 2011, 18:52
danke für die hilfe.
das programm, wie du es schreibst, funktioniert tadellos -> keine fehlermeldung.

das ändert aber für delphi überhaupt nix:
turbo pascal und notepad zeigen folgendes an:

1 À\ï¾TìBA  P P 5Ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  Œ Ô:ç  > =^äM  06:19 31.05.2011

Delphi aber zeigt, egal ob ich die datei als stream lese, als file of char lese, in einen string umwandle und in eine datei schreibe oder anzeige, delphi also zeigt:

" "
(ohne leerzeichen).

Ist das erklärbar?
Oder der beweis dafür, dass es außerirdische gibt?
Wo liegt MEIN fehler?
Thomas Lecomte
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: file of char delphi7 geht nicht

  Alt 10. Nov 2011, 19: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 19:27 Uhr)
  Mit Zitat antworten Zitat
lecomte

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

AW: file of char delphi7 geht nicht

  Alt 10. Nov 2011, 19: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
Antwort Antwort
Seite 1 von 3  1 23      


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 19:12 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