Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String ist zu lang für copy ? (https://www.delphipraxis.net/12934-string-ist-zu-lang-fuer-copy.html)

HomerGER 6. Dez 2003 21:45


String ist zu lang für copy ?
 
hallo ihr
ich hab ne string in den können über 2000 Zeichen drin sein
leider schneidet mir copy wohl bei 255 den string ab
weiß jemand wie es anderes lösen kann?

das hier läuft durch ein for schleife
Code:
pos_i := Pos('<++>', daten_s);
daten_r.dat_aas[i][j] := Copy(daten_s, 1, pos_i - 1);
Delete(daten_s, 1, pos_i + 3);
wobei in daten_s über 2000 zeichen drin sind


Homer

Duffy 6. Dez 2003 22:01

Re: String ist zu lang für copy ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo HomerGER,
am Copy wird es wohl nicht liegen. Siehe Beispiel.

bye
Claus

HomerGER 6. Dez 2003 23:01

Re: String ist zu lang für copy ?
 
schön und wo bleibt dann mein rest :gruebel:

Hansa 6. Dez 2003 23:04

Re: String ist zu lang für copy ?
 
ohne Angabe der Variablen-Deklaration wird man wohl nicht genau sagen können, woran das liegt.

Duffy 6. Dez 2003 23:17

Re: String ist zu lang für copy ?
 
Hallo HomerGER,
so wie es Hansa sieht, sehe ich es auch.

bye
Claus

Möglichkeiten wären:
===============
Du verwendest Short Strings --> Dann wären die Strings <= 255
oder deine Strings sind limitiert ala String[255];
pos_i könnte Byte sein

Christian Seehase 7. Dez 2003 00:49

Re: String ist zu lang für copy ?
 
Moin Homer,

oder die Position von <++> liegt bei 256.

HomerGER 7. Dez 2003 10:49

Re: String ist zu lang für copy ?
 
ok sorry

hier die Function

Code:
Function Werte_Zerlegen_GU(input_s : String; art_s : String; nr_i : Integer) : String;
var
daten_s : String;
daten_r : DatConstAry3Ary;
i : Integer;
j : Integer;
pos_i : Integer;
begin
    daten_s := input_s;

    //Array löschen
    for i := 1 to k_max_dat_i do
    begin
        for j := 1 to 3 do
        begin
            daten_r.dat_aas[i][j] := '';
        end;
    end;

    //Array füllen
    for i := 1 to k_max_dat_i do
    begin
        for j := 1 to 3 do
        begin
            if (daten_s <> '') then
            begin
                pos_i := Pos('<++>', daten_s);
                daten_r.dat_aas[i][j] := Copy(daten_s, 1, pos_i - 1);
                Delete(daten_s, 1, pos_i + 3);
            end;
        end;
    end;
end;

DatConstAry3Ary ist ne record
Code:
DatConstAry3Ary = Record
dat_aas : Array[1..k_max_dat_i] of Array[1..3] of String;
end;
in daten_s ist noch alles da
aber in daten_r.dat_aas nicht mehr
also dachte ich das copy nur max 255 zeichen copieren kann

HomerGER 7. Dez 2003 10:58

Re: String ist zu lang für copy ?
 
sorry hab es noch mal geprüft
es kommt nicht alles an

die Daten werden aus einer ini datei ausgelesen

mit dieser Function
Code:
//Aus Ini Daten lesen
Function Ini_Lesen_IU(datei_s : String; section_s : String; key_s : String) : String;
var
Ini : TIniFile;
begin
    Ini :=TIniFile.Create(datei_s);
    try
        Result := Ini.ReadString(section_s, key_s, '');
    finally
        Ini.free;
    end;
end;
und hier fehlt dann die hälfte


Er überträgt 2047 Zeichen

CalganX 7. Dez 2003 11:04

Re: String ist zu lang für copy ?
 
Hi,
soweit ich weiß, werden bei TIniFile nur die ersten 255 Bytes ausgelesen.

Versuch es mal mit TBigIniFile.

Chris

[edit]Wenn 2047 Zeichen übertragen, werden, dann ist das Quatsch mit Soße, was ich gesagt habe.[/edit]

HomerGER 7. Dez 2003 11:22

Re: String ist zu lang für copy ?
 
thx für den tip mit big geht es
nur beim copilieren zeigt er warnungen und hinweise an

[Warnung] BigIni.pas(103): Eigenschaftsdeklaration verweist auf private-Vorfahr 'TBigIniFile.FSectionList'
[Hinweis] BigIni.pas(198): Variable 'IXRead' wurde deklariert, aber in 'TBigIniFile.SetFileName' nicht verwendet
[Hinweis] BigIni.pas(411): Variable 'oneLine' wurde deklariert, aber in 'TBigIniFile.ReadAll' nicht verwendet

CalganX 7. Dez 2003 11:44

Re: String ist zu lang für copy ?
 
Hi,
das kannst du ignorieren. Da hat wohl Borland ein wenig Mist gebaut. :twisted:

Chris

HomerGER 7. Dez 2003 11:48

Re: String ist zu lang für copy ?
 
hmmm
es gib da wohl mehrere BigIni im Net
ich hab die hier genommen

// BigIni.PAS eh970104
// Version 1.21
// Unit to read/write *.ini files even greater than 64 kB
// (till today, the KERNEL.DLL and KERNEL32.DLL do it NOT).

// (c) Edy Hinzen 1996/97 - Freeware
// Mailto:EdyHinzen@aol.com
// http://members.aol.com/EdyHinzen

ich benutze D7 Pro

CalganX 7. Dez 2003 12:27

Re: String ist zu lang für copy ?
 
Hi,
ich dachte eigentlich an die TBigIniFile, die bei Delphi dabei ist. :gruebel:

Chris

HomerGER 7. Dez 2003 13:25

Re: String ist zu lang für copy ?
 
wenn du mir sagst wo ich die finden kann nehme ich die dann lieber

CalganX 7. Dez 2003 13:43

Re: String ist zu lang für copy ?
 
Hi,
ich habe gerade gesehen, dass Borland diese gar nicht drin hat. :shock:
Dabei hab ich die mal genutzt. :|

Na gut. Du hast jetzt was und das scheint ja zu funktionieren. Die Warnungen kannst du ja weitgehends ignorieren.

Chris

PS: Allerdings frage ich mich, warum du bei einer solchen Datenmenge Ini-Files verwendest. Datenbanken sind da deutlich komfortabler und passender. Und da du die Professionalversion hast, dürfte es da ja keine großen Probleme geben. Alternativ geht ja auch noch XML.

HomerGER 7. Dez 2003 13:44

Re: String ist zu lang für copy ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal die news Version die im Net gefunden habe

HomerGER 7. Dez 2003 13:51

Re: String ist zu lang für copy ?
 
Zitat:

Zitat von Chakotay1308
PS: Allerdings frage ich mich, warum du bei einer solchen Datenmenge Ini-Files verwendest. Datenbanken sind da deutlich komfortabler und passender. Und da du die Professionalversion hast, dürfte es da ja keine großen Probleme geben. Alternativ geht ja auch noch XML.

DB's wollte ich vermeiden
XML hmm .. ich hab aber grösse L

es ist nur ein datensatz so lang und das auch nicht immer
Kofortabler hmm . datenbanktreiber installieren prüfen ob da, läuft er usw
ich lese damit systeminfos vom User aus und ich denke damit reicht die ini


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:03 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