 |
| |
|
|
 |
Autor |
Nachricht |
 |
| |
| Coder |
#1| Verfasst am: 29.08.2008, 16:36 Titel: Dateien mit 3, GB mit Delphi 3 beatbeiten/Editieren möglich? |
 |
 |
 |
|
aktives Mitglied Status: offline Beiträge: 167 angemeldet: 27.02.2004 Wohnort: Osnabrück Delphi 3 Professional

|
Sprache: Delphi (Win32) Hallo, ich möchte 2 Dateien bearbeiten, die aber je ca. 3 GB groß sind.
Unter Delphi erhalte ich nur eine | Zitat: | | Exception der Klasse EFOpenError.folgende Datei [Dateipfad+Name] kann nicht geöffnet werden | .
Wenn ich eine kleinere Datei (getestet mit 1,78 GB Datei) öffne habe ich keine Probleme.
Hab schon mit Delphi5 versucht und daher den Code mit int64 angepaßt. Erfolglos.
Gleiche Fehlermeldung.
Delphi-Quellcode: | zusammenfalten | markieren | 1 · · · 5 · · · · 10 · · · · 15 · 17
| procedure TForm1.Button4Click(Sender: TObject);
var fn: TFileName;
newSize: int64;
Siz, i, v: integer;
dd, t, s: string;
begin
if Edit1.Text = '' then exit;
fn := Edit1.Text;
with TFileStream.Create(fn, fmOpenReadWrite) do
begin
s := inttostr(Size);
Free;
end;
Label5.Caption := 'Dateigröße: ' + s + ' Byte';
end;
Siz:=Strtoint64(dd);
end; |
|
Woran liegt das?
hat das was mit Dateien mit weniger als 214483647 Bytes und TStream zu tun?
was kann ich tun?
Besonders, wenn ich später mal die SIZE vom TStream/ der Datei verändern möchte? |
 ICQ: 204141443
Delphi 3 Professional, AMD Duron 800 Mhz, 2x128 MB RAM, 64 MB Graka, Sound-onBoard |
 |
|
|
|
| |
| shmia |
#2| Verfasst am: 29.08.2008, 16:43 Titel: Re: Dateien mit 3, GB mit Delphi 3 beatbeiten/Editieren mögl |
 |
 |
 |
|
aktives Mitglied Status: offline Beiträge: 4.407 angemeldet: 02.03.2004 Delphi 5 Professional

|
Die Eingabe des Dateinamens erfolgt über ein Edit-Feld und das ist schlecht,
denn wie leicht begeht man einen Tippfehler!!!
Also entweder einen OpenFileDialog benützen oder zumindest prüfen, ob die Datei überhaupt existiert.
| Delphi-Quellcode: | markieren | if Edit1.Text = '' then exit;
fn := Edit1.Text;
if not FileExists(fn) then raise Exception.CreateFmt('Datei <%s> existiert nicht', [fn]); // <====
with TFileStream.Create(fn, fmOpenReadWrite) do |
| |
|
 |
|
|
|
| |
| Coder |
#3| Verfasst am: 29.08.2008, 17:12 Titel: Re: Dateien mit 3, GB mit Delphi 3 beatbeiten/Editieren mögl |
 |
 |
 |
|
aktives Mitglied Status: offline Beiträge: 167 angemeldet: 27.02.2004 Wohnort: Osnabrück Delphi 3 Professional

|
ist gegeben.
Ein weiterer Button fügt per
if Opendialgo.execute begin Edit1.text := OpenDialog1.Exename end;
den Dateinamen direkt in den Edit1.text ein.
Die Dateien existieren auch und haben kurze eindeutige Dateinamen und liegen ein einem kurzen Dateipfad (C:\Test\Datei1.dat)
Ebenso bietet die kleinere 1,7 GB Datei gleiche Vorausssetungen, aber damit funktionoiert es.
Es muß also an der Dateigröße von etvl. 3 GB liegen
aber da muß es doch eine Lösung für geben?
was haben die Programmierer 1997 ode wenigstens 1999 gemacht? |
 ICQ: 204141443
Delphi 3 Professional, AMD Duron 800 Mhz, 2x128 MB RAM, 64 MB Graka, Sound-onBoard |
 |
|
|
|
| |
| grenzgaenger |
#4| Verfasst am: 29.08.2008, 17:21 Titel: Re: Dateien mit 3, GB mit Delphi 3 beatbeiten/Editieren mögl |
 |
 |
 |
|
ehem. Benutzer

|
damals war bei 2 GB maximal schluss ...
propier es mal mit dem guten alten assign/reset/readln ... vielleicht hilfts ...
ist zwar seit d1 auch eine FS kappselung ... aber vielleicht etwas anders implementiert... |
|
 |
|
|
|
| |
| Coder |
#5| Verfasst am: 29.08.2008, 18:21 Titel: Re: Dateien mit 3, GB mit Delphi 3 beatbeiten/Editieren mögl |
 |
 |
 |
|
aktives Mitglied Status: offline Beiträge: 167 angemeldet: 27.02.2004 Wohnort: Osnabrück Delphi 3 Professional

|
ja, hatte zuvor auch schon daran gedacht.
| Delphi-Quellcode: | markieren | var F: File;
Fs, S: String;
begin
Assignfile(F, Edit1.text);
reset (F);
FS := inttostr(Filesize (f));
Closefile (f);
End; |
|
doch da kommt "I/O-Fehler 32"
("mit OK")
sonst nix
was gibt's denn noch?
jemand meinte "Createfilex"
http://msdn.microsoft.com/en-us/library/aa912087.aspx
doch davon hab ich gar keine Ahnung. |
 ICQ: 204141443
Delphi 3 Professional, AMD Duron 800 Mhz, 2x128 MB RAM, 64 MB Graka, Sound-onBoard |
 |
|
|
|
| |
| grenzgaenger |
#6| Verfasst am: 29.08.2008, 18:25 Titel: Re: Dateien mit 3, GB mit Delphi 3 beatbeiten/Editieren mögl |
 |
 |
 |
|
ehem. Benutzer

|
und was heisst #32? |
|
 |
|
|
|
| |
| himitsu |
#7| Verfasst am: 29.08.2008, 18:25 Titel: Re: Dateien mit 3, GB mit Delphi 3 beatbeiten/Editieren mögl |
 |
 |
 |
|
sehr aktives Mitglied Alter: 30 Status: offline Beiträge: 13.895 angemeldet: 11.10.2003 Wohnort: Elbflorenz Delphi 2010 Professional

|
solange man bei AssignFile/Reset/ReadLn enbenso bei den FileStreams die Angaben zur Dateigröße und der Dateipositon, sowie EOF ignoriert, dann ist die Dateigröße unbegrenzt (jedenfalls programmseitig).
Also sequentielles Lesen oder Schreiben sollte dennoch mit ReadLn/WriteLn/BlockRead/BlockWrite und TFileStream möglich sein.
mit ReadLn/WriteLn sollte aber insgesamt immernoch bei 2GB Schluß sein,
aber TFileStream arbeitet bekanntlich mit Int64 und wär demnach doch unbegrenzt. |
 an alle schlaflosen Programmierer ... macht ein Upgrade, denn mit neuer Technik passiert sowas nicht > http://xkcd.com/571
www.fnse.de/img.htm
Zuletzt bearbeitet von himitsu am 29.08.2008, 18:26, insgesamt 1-mal bearbeitet. |
 |
|
|
|
| |
| Coder |
#8| Verfasst am: 29.08.2008, 18:42 Titel: Re: Dateien mit 3, GB mit Delphi 3 beatbeiten/Editieren mögl |
 |
 |
 |
|
aktives Mitglied Status: offline Beiträge: 167 angemeldet: 27.02.2004 Wohnort: Osnabrück Delphi 3 Professional

|
ich hatte es mit TfileStream unter Delphi 5 Std versucht (D 3 kennt ja kein int64)
keine Veränderung.
das Blöde ist, daß ich nicht genug Platz auf der HDD hab um die Datei mit irgendwas in 2 GB und 1,5 GB zu splitten. Sonst würde ich das versuchen. |
 ICQ: 204141443
Delphi 3 Professional, AMD Duron 800 Mhz, 2x128 MB RAM, 64 MB Graka, Sound-onBoard |
 |
|
|
|
| |
| grenzgaenger |
#9| Verfasst am: 29.08.2008, 20:34 Titel: Re: Dateien mit 3, GB mit Delphi 3 beatbeiten/Editieren mögl |
 |
 |
 |
|
ehem. Benutzer

|
glaube fast, so einen thread gabs hier schon mal... denke die SuFu wird vom nutzen sein...
so weit ich mich erinnere, soll es glaub ich über die WinAPI klappen...
woher kommt denn die monster datei? |
|
 |
|
|
|
| |
| Fridolin Walther |
#10| Verfasst am: 29.08.2008, 22:39 Titel: Re: Dateien mit 3, GB mit Delphi 3 beatbeiten/Editieren mögl |
 |
 |
 |
|
Mitglied Alter: 26 Beiträge: 429 angemeldet: 11.05.2008 Wohnort: Kühlungsborn Delphi 2009 Professional

|
Windows API ist Dein Freund:
CreateFile ReadFile WriteFile SetFilePointer GetFileSize CloseHandle
Fürs Arbeiten mit großen Dateien (> 2GB) sind die Parameter lpDistanceToMoveHigh und lpFileSizeHigh von Relevanz und müssen mit angegeben werden. Ansonsten funktioniert der Zugriff auf Große Dateien exakt identisch mit dem Zugriff auf normale Dateien. |
|
 |
|
|
|
| |
| Christian Seehase |
#11| Verfasst am: 29.08.2008, 23:12 Titel: Re: Dateien mit 3, GB mit Delphi 3 beatbeiten/Editieren mögl |
 |
 |
 |
|
Super-Moderator Alter: 46 Beiträge: 11.176 angemeldet: 29.05.2002 Wohnort: Hamburg Delphi 7 Professional

|
Moin Coder,
| Coder hat folgendes geschrieben: | ich hatte es mit TfileStream unter Delphi 5 Std versucht (D 3 kennt ja kein int64)
keine Veränderung.
|
wenn ich mich recht entsinne, kann TFileStream in D5 auch nur bis 2GB grosse Dateien verarbeiten.
Da bleibt Dir wohl wirklich nur die, schon angesprochene, Variante, direkt die API-Funktionen zu benutzen. |
 Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist |
 |
|
|
|
| |
| himitsu |
#12| Verfasst am: 31.08.2008, 07:31 Titel: Re: Dateien mit 3, GB mit Delphi 3 beatbeiten/Editieren mögl |
 |
 |
 |
|
sehr aktives Mitglied Alter: 30 Status: offline Beiträge: 13.895 angemeldet: 11.10.2003 Wohnort: Elbflorenz Delphi 2010 Professional

|
ansonsten gibt es hier in der DP auch einige private FileStream-Varianten
such dir einfach eine und ändere das Int64 durch etwas, was dein Delphi kennt (Comp?)
z.B.: http://www.delphipraxis.net/topic134059_mapped+streams.html
(find jetzt auf die Schnell keine Anderen, aber es gibt noch ein paar ... nja, meine NonClass-Variante würde ich dir wohl besser nicht empfehlen ) |
 an alle schlaflosen Programmierer ... macht ein Upgrade, denn mit neuer Technik passiert sowas nicht > http://xkcd.com/571
www.fnse.de/img.htm |
 |
|
|
|
 |
|
 |
| |
|
|
| |
 
|
|
| |
|
Du darfst keine Beiträge in dieses Forum schreiben. Du darfst auf Beiträge in diesem Forum nicht antworten. Du darfst Deine Beiträge in diesem Forum nicht bearbeiten. Du darfst Deine Beiträge in diesem Forum nicht löschen. Du darfst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum nicht posten. Du kannst Dateien in diesem Forum nicht herunterladen.
|
|
 |