Hallo zusammen,
ich hatte gestern ein seltsames Phänomen, dass ich mir nicht erklären kann. Ich wollte meinem Objekt "MapiMessage: TMapiMessage" mehrere FileAttach (dynamisches Array) zuweisen:
<pre>
FileAttach[0].nPosition := Cardinal($FFFFFFFF);
FileAttach[0].lpszPathName := PChar(ListBox.Items.Strings[var_iZaehler]);
FileAttach[0].lpszFileName := PChar(ExtractFileName(ListBox.Items.Strings[var_iZaehler]));
FileAttach[1].nPosition := Cardinal($FFFFFFFF);
FileAttach[1].lpszPathName := PChar(ListBox.Items.Strings[var_iZaehler]);
FileAttach[1].lpszFileName := PChar(ExtractFileName(ListBox.Items.Strings[var_iZaehler]));
FileAttach[2].nPosition := Cardinal($FFFFFFFF);
FileAttach[2].lpszPathName := PChar(ListBox.Items.Strings[var_iZaehler]);
FileAttach[2].lpszFileName := PChar(ExtractFileName(ListBox.Items.Strings[var_iZaehler]));
FileAttach[3].nPosition := Cardinal($FFFFFFFF);
FileAttach[3].lpszPathName := PChar(ListBox.Items.Strings[var_iZaehler]);
FileAttach[3].lpszFileName := PChar(ExtractFileName(ListBox.Items.Strings[var_iZaehler]));
USW......
</pre>
Das ganze funktioniert wunderbar, jedoch finde ich es komisch, dass eine solche Zuweisung in einer Schleife nicht funktioniert:
<pre>
while var_iZaehler < MapiMessage.nFileCount do
begin
FileAttach[var_iZaehler].nPosition := Cardinal($FFFFFFFF);
FileAttach[var_iZaehler].lpszPathName := PChar(ListBox.Items.Strings[var_iZaehler]);
FileAttach[var_iZaehler].lpszFileName := PChar(ExtractFileName(ListBox.Items.Strings[var_iZaehler]));
inc(var_iZaehler);
end;
</pre>
Es funktioniert erst, wenn man die Werte mit einem StrNew zuweist:
<pre>
while var_iZaehler < MapiMessage.nFileCount do
begin
FileAttach[var_iZaehler].nPosition := Cardinal($FFFFFFFF);
FileAttach[var_iZaehler].lpszPathName := StrNew(PChar(ListBox.Items.Strings[var_iZaehler]));
FileAttach[var_iZaehler].lpszFileName := StrNew(PChar(ExtractFileName(ListBox.Items.Strings[var_iZaehler])));
inc(var_iZaehler);
end;
</pre>
Woran liegt das?
ich hatte gestern ein seltsames Phänomen, dass ich mir nicht erklären kann. Ich wollte meinem Objekt "MapiMessage: TMapiMessage" mehrere FileAttach (dynamisches Array) zuweisen:
<pre>
FileAttach[0].nPosition := Cardinal($FFFFFFFF);
FileAttach[0].lpszPathName := PChar(ListBox.Items.Strings[var_iZaehler]);
FileAttach[0].lpszFileName := PChar(ExtractFileName(ListBox.Items.Strings[var_iZaehler]));
FileAttach[1].nPosition := Cardinal($FFFFFFFF);
FileAttach[1].lpszPathName := PChar(ListBox.Items.Strings[var_iZaehler]);
FileAttach[1].lpszFileName := PChar(ExtractFileName(ListBox.Items.Strings[var_iZaehler]));
FileAttach[2].nPosition := Cardinal($FFFFFFFF);
FileAttach[2].lpszPathName := PChar(ListBox.Items.Strings[var_iZaehler]);
FileAttach[2].lpszFileName := PChar(ExtractFileName(ListBox.Items.Strings[var_iZaehler]));
FileAttach[3].nPosition := Cardinal($FFFFFFFF);
FileAttach[3].lpszPathName := PChar(ListBox.Items.Strings[var_iZaehler]);
FileAttach[3].lpszFileName := PChar(ExtractFileName(ListBox.Items.Strings[var_iZaehler]));
USW......
</pre>
Das ganze funktioniert wunderbar, jedoch finde ich es komisch, dass eine solche Zuweisung in einer Schleife nicht funktioniert:
<pre>
while var_iZaehler < MapiMessage.nFileCount do
begin
FileAttach[var_iZaehler].nPosition := Cardinal($FFFFFFFF);
FileAttach[var_iZaehler].lpszPathName := PChar(ListBox.Items.Strings[var_iZaehler]);
FileAttach[var_iZaehler].lpszFileName := PChar(ExtractFileName(ListBox.Items.Strings[var_iZaehler]));
inc(var_iZaehler);
end;
</pre>
Es funktioniert erst, wenn man die Werte mit einem StrNew zuweist:
<pre>
while var_iZaehler < MapiMessage.nFileCount do
begin
FileAttach[var_iZaehler].nPosition := Cardinal($FFFFFFFF);
FileAttach[var_iZaehler].lpszPathName := StrNew(PChar(ListBox.Items.Strings[var_iZaehler]));
FileAttach[var_iZaehler].lpszFileName := StrNew(PChar(ExtractFileName(ListBox.Items.Strings[var_iZaehler])));
inc(var_iZaehler);
end;
</pre>
Woran liegt das?
Comment