AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi MMF exception bei schreiben von vielen daten o_O
Thema durchsuchen
Ansicht
Themen-Optionen

MMF exception bei schreiben von vielen daten o_O

Ein Thema von supermuckl · begonnen am 23. Jun 2004 · letzter Beitrag vom 23. Jun 2004
Antwort Antwort
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#1

MMF exception bei schreiben von vielen daten o_O

  Alt 23. Jun 2004, 02:47
habe folgenden code mit dem ich in ein memory mapped file schreibe:

Delphi-Quellcode:
var
packet:string;
iLen:int64;
DataFile: PByte;
begin

for i2 := 0 to 999 do begin
 packet := packet+'lllllbbbbbbbbbaaaaaaaaaalllllllaaaaaaaaabbbbbbb';
end;

iLen := length(packet);

StrLCopy(Pchar(DataFile),pchar(packet),iLen);

das öffnen des MMF und schließen hab ich mal ausgelassen weil das funktioniert

ich bekomme folgenden fehler in der StrLCopy zeile:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 004088E5 in Modul 'Project1.exe'. Schreiben von Adresse 01261000'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------


wenn ich allerdings nich 999 schleifendurchgänge verwende sondern nur 9 ( bei 99 kommt auch exception ) dann funktioniert alles perfekt !

das MMF wurde aber nicht "zu klein" dimensioniert ( hab schon bis 900 mb getestet und funktioniert )

was kann da der auslöser sein? kann die funktion StrLCopy einfach nicht soviel auf einmal kopieren? oder stimmt was mit pchar nicht ?
bin ratlos

// nachtrag
wenn ich statt:
iLen := length(packet);

folgendes verwende:
iLen := SizeOf(packet)-1;

so wie es in de hilfe für StrLCopy steht
dann krieg ich maximal 3 zeichen + ein leerzeichen ( vermutlich auch noch ein 0 terminator dabei ) maximal in das MMF file rein
mit length krieg ich mein gesamtes paket rein.. aber halt nur bis zu der größe wo die exception mich nervt

auch wäre es cool wenn ich den nullterminator da nicht mit drin hätte ( schreiben ohne 0 terminator ) weil mir das ziemlich im weg ist fürs binäre daten schreiben
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Benutzerbild von Net7
Net7

Registriert seit: 22. Jun 2004
Ort: Lauenburg
161 Beiträge
 
Delphi 7 Professional
 
#2

Re: MMF exception bei schreiben von vielen daten o_O

  Alt 23. Jun 2004, 03:24
Moin, bin auch gerade am grübeln, hast du es mal mit nem Array versucht?? Das bei jedem durchgang einen Wert speichert?? Weil in meiner Delphihilfe steht das ungefär so
Delphi-Quellcode:
const MAX_BUFFER = 10;
procedure TForm1.Button1Click(Sender TObject);
var
  Buffer: array [0..MAX_BUFFER] of char;
begin
  StrLCopy(Buffer, PChar(Edit1.Text), MAX_BUFFER);
  Application.MessageBox(Buffer, 'StrLCopy example', [smbOK], smsInformation, smbOK, smbCancel);
end;
hmm vieleicht hilft es dir ja etwas auf die Sprünge.
Marko
So`ne Atombombe kann einem den ganzen Tag verderben!
Eine eigene DLL in C++ geschrieben wird meist ein Sklave für mein Delphi/Pascal.
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#3

Re: MMF exception bei schreiben von vielen daten o_O

  Alt 23. Jun 2004, 16:14
der linke teil ( das ziel ) ist ja kein buffer wo ich einfach von string zu array of char umändern kann sondern ein zeiger auf ein memory mapped file view

also Pbyte

und da kann ich glaub ich nicht so einfach ein arry of view nehmen *g*
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#4

Re: MMF exception bei schreiben von vielen daten o_O

  Alt 23. Jun 2004, 16:24
ich hab auch schon das probiert:

Delphi-Quellcode:
for i2 := 0 to 999 do begin
 szBuffer[i] := 'b';
end;

StrLCopy(Pchar(DataFile),pchar(szBuffer[0]),10);
aber da geht mal überhaupt nix

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 004088D3 in Modul 'Project1.exe'. Lesen von Adresse 00000000'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------
// nachtrag

hab mal geschaut wieviel der dinger schreibt bis zur exception
es sind genau 1025 spalten und 4 zeilen im notepad.. also 4100 chars
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#5

Re: MMF exception bei schreiben von vielen daten o_O

  Alt 23. Jun 2004, 16:46
// nachtrag 2

wenn ich die funktion strlcpy ( api ) verwende:
lstrcpy(pointer(datafile),pointer(packet));

dann kopiert es ohne error !
aber auch nur 4100 chars auf einmal is das ein limit ?!?! kann ich mir kaum vorstellen
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: MMF exception bei schreiben von vielen daten o_O

  Alt 23. Jun 2004, 17:30
4100? Vielleicht 4096 (2^12)?
Damit könnte es zusammenhängen, 4096 ist z.B. AFAIK die Größe einer Seite (Page) im virtuellen Speicher.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#7

Re: MMF exception bei schreiben von vielen daten o_O

  Alt 23. Jun 2004, 17:38
d.h. ich kann halt nicht mehr als 4096 bytes auf einmal kopieren ?
... wär ja nich so schlimm.. aber dann sollte das auch irgendwo stehen so ein ******
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: MMF exception bei schreiben von vielen daten o_O

  Alt 23. Jun 2004, 18:46
Keine AHnung, ob das wirklich so ist, aber 4096 ist halt so eine "magische" Zahl (da 2^12).
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
23. Jun 2004, 19:54
Dieses Thema wurde von "Christian Seehase" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Windows API" verschoben.
Ist kein Beispiel für die Code-Lib
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#10

Re: MMF exception bei schreiben von vielen daten o_O

  Alt 23. Jun 2004, 20:01
häh das hab ich doch garnet angeklickt das es in der codelib sein soll o_O *nixmehrpeil*

ich glaub ich code jetzt an einem anderen projekt weider sonst explodier ich noch lol
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:51 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