AGB  ·  Datenschutz  ·  Impressum  







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

mysteriöse EAccessViolation

Ein Thema von BrainCode · begonnen am 20. Jan 2003 · letzter Beitrag vom 23. Jan 2003
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#11
  Alt 21. Jan 2003, 23:20
function Read(var Buffer; Count: Longint): Longint; override;

Sagt meine Hilfe. Aber dein Buffer ist ein String. Also erst mal mit Zahlen arbeiten, und dann in String umwandeln, oder TextFile nehmen.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Benutzerbild von BrainCode
BrainCode

Registriert seit: 18. Jan 2003
119 Beiträge
 
#12
  Alt 22. Jan 2003, 20:00
Mit dem Datentyp hatte ich mich geirrt, es ist ein Longint.

Code:
Memo1.Lines.LoadfromFile('c:\Test.txt');
Das hier funktioniert zwar bei Textdateien, ich will aber auch, wie Notepad, binäre Dateien wie z.B. exe oder gif-Dateien öffnen können.

Der Tip mit buffer[1] hat mir sehr geholfen, auch dieser funzt mit Textfiles wunderbar, aber wie das mit einer Gif-Datei aussieht, könnt ihr im Anhang bestaunen ...

Die Screenshots sind von einem Programmablauf mit folgendem Code entstanden:
Code:
const
  count = 1024;
var
  datei: tfilestream;
  buffer: string;
  r: longint;
begin
  if opendialog1.Execute then begin
    datei := tfilestream.Create(opendialog1.FileName,fmopenread or fmsharedenynone);
    setlength(buffer,count);
    repeat
      r := datei.Read(buffer[1],sizeof(buffer));
      memo1.Text := memo1.Text + buffer;
      //showmessage(inttostr(r));
    until (r < sizeof(buffer));
    datei.Free;
  end;
end;
Der Dateiname, der in dem Screenshot ständig zu sehen ist, ist der des gif-Bildes.
Miniaturansicht angehängter Grafiken
notepad.png   meinprogramm.png  
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#13
  Alt 23. Jan 2003, 13:37
So, lieber Braincode, teste mal den folgenden Code:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
const
  Count = 1024;
var
  Datei: TFileStream;
  Buffer: array[0..(Count-1)] of Char;
  l,i: Word;
  Result: TCaption;
begin
if not OpenDialog1.Execute then Exit;

Memo1.Clear;
Result := '';

Datei := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
try
  while true do
    begin
      l := Datei.Read(Buffer, Count);
      if l <> Count then
        begin
          if not (l = 0) then
            for i := 0 to (l - 1) do
              Result := Result + Buffer[i];
          Break;
        end;
      Result := Result + Buffer;
    end;
finally
  Datei.Free;
end;

Memo1.Text := Result;
end;
sollte eigentlich jede Datei brav einlesen. Nur nicht Count auf 0 stellen, oder andere idiotische Sachen. Ähm, so Sachen wie Fortschrittsanzeige oder so, kann man wenn man Lust hat auch noch einbauen.


PS: nochmal zu deinem Ursprungscode:

r := datei.Read(buffer[1],sizeof(buffer)); Scheint mir ein wenig verdächtig.

Edit: ich nenne nie mehr eine Variable "l" (kleines L) das ist ja schlimm zu lesen, wenn die Zahlen keine andere Farbe bekommen.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 03:07 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